mirror of
https://github.com/danog/byte-stream.git
synced 2024-12-02 09:17:50 +01:00
37 lines
813 B
PHP
37 lines
813 B
PHP
<?php
|
|
|
|
namespace Amp\ByteStream;
|
|
|
|
use Amp\Promise;
|
|
use Amp\Success;
|
|
|
|
/**
|
|
* Input stream with a single already known data chunk.
|
|
*/
|
|
final class InMemoryStream implements InputStream {
|
|
private $contents;
|
|
|
|
/**
|
|
* @param string|null $contents Data chunk or `null` for no data chunk.
|
|
*/
|
|
public function __construct(string $contents = null) {
|
|
$this->contents = $contents;
|
|
}
|
|
|
|
/**
|
|
* Reads data from the stream.
|
|
*
|
|
* @return Promise Resolves with the full contents or `null` if the stream has closed / already been consumed.
|
|
*/
|
|
public function read(): Promise {
|
|
if ($this->contents === null) {
|
|
return new Success;
|
|
}
|
|
|
|
$promise = new Success($this->contents);
|
|
$this->contents = null;
|
|
|
|
return $promise;
|
|
}
|
|
}
|