2017-04-30 08:31:53 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace Amp\ByteStream;
|
|
|
|
|
|
|
|
use Amp\Promise;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* An `OutputStream` allows writing data in chunks. Writers can wait on the returned promises to feel the backpressure.
|
|
|
|
*/
|
|
|
|
interface OutputStream {
|
|
|
|
/**
|
|
|
|
* Writes data to the stream.
|
|
|
|
*
|
|
|
|
* @param string $data Bytes to write.
|
|
|
|
*
|
|
|
|
* @return Promise Succeeds once the data has been successfully written to the stream.
|
|
|
|
*
|
|
|
|
* @throws ClosedException If the stream has already been closed.
|
|
|
|
*/
|
|
|
|
public function write(string $data): Promise;
|
|
|
|
|
|
|
|
/**
|
2017-05-12 01:08:45 +02:00
|
|
|
* Marks the stream as no longer writable. Optionally writes a final data chunk before. Note that this is not the
|
|
|
|
* same as forcefully closing the stream. This method waits for all pending writes to complete before closing the
|
|
|
|
* stream. Socket streams implementing this interface should only close the writable side of the stream.
|
2017-04-30 08:31:53 +02:00
|
|
|
*
|
|
|
|
* @param string $finalData Bytes to write.
|
|
|
|
*
|
|
|
|
* @return Promise Succeeds once the data has been successfully written to the stream.
|
|
|
|
*
|
|
|
|
* @throws ClosedException If the stream has already been closed.
|
|
|
|
*/
|
|
|
|
public function end(string $finalData = ""): Promise;
|
|
|
|
}
|