1
0
mirror of https://github.com/danog/byte-stream.git synced 2024-11-26 20:04:51 +01:00
byte-stream/lib/InMemoryStream.php

40 lines
821 B
PHP
Raw Permalink Normal View History

2017-05-08 11:15:10 +02:00
<?php
namespace Amp\ByteStream;
use Amp\Promise;
use Amp\Success;
/**
* Input stream with a single already known data chunk.
*/
2018-09-21 22:45:13 +02:00
final class InMemoryStream implements InputStream
{
2017-05-08 11:15:10 +02:00
private $contents;
/**
* @param string|null $contents Data chunk or `null` for no data chunk.
*/
2018-09-21 22:45:13 +02:00
public function __construct(string $contents = null)
{
2017-05-08 11:15:10 +02:00
$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.
*/
2018-09-21 22:45:13 +02:00
public function read(): Promise
{
2017-05-08 11:15:10 +02:00
if ($this->contents === null) {
return new Success;
}
$promise = new Success($this->contents);
$this->contents = null;
return $promise;
}
}