1
0
mirror of https://github.com/danog/amp.git synced 2024-12-04 18:38:17 +01:00
amp/lib/Stream.php
Aaron Piotrowski dd0f01f4db
Add onDisposal() and onCompletion() to Stream
onCompletion callbacks are invoked if complete() or fail() is called before the stream is disposed.

onDisposal callbacks are invoked if the stream is disposed before being completed or failed.

Forbid failing a stream with DisposedException.
2020-09-24 12:53:31 -05:00

51 lines
1.4 KiB
PHP

<?php
namespace Amp;
/**
* A stream is an asynchronous set of ordered values.
*
* @template-covariant TValue
*/
interface Stream
{
/**
* Succeeds with the emitted value if the stream has emitted a value or null if the stream has completed.
* If the stream fails, the returned promise will fail with the same exception.
*
* @return Promise<mixed|null> Resolves with null if the stream has completed.
*
* @psalm-return Promise<TValue|null>
*
* @throws \Throwable The exception used to fail the stream.
*/
public function continue(): Promise;
/**
* Disposes of the stream, indicating the consumer is no longer interested in the stream output.
*
* @return void
*/
public function dispose();
/**
* Registers a callback to be invoked *only* if the stream is disposed before being completed or failed.
*
* @param callable():void $onDisposal
*
* @return void
*/
public function onDisposal(callable $onDisposal);
/**
* Registers a callback to be invoked when the stream is completed or failed. If the stream is failed, the exception
* used to fail the stream is given as the first argument to the callback. Null is given as the first argument if
* the stream is completed.
*
* @param callable(?\Throwable):void $onCompletion
*
* @return void
*/
public function onCompletion(callable $onCompletion);
}