class BufferStream
Provides a buffer stream that can be written to to fill a buffer, and read from to remove bytes from the buffer.
This stream returns a "hwm" metadata value that tells upstream consumers what the configured high water mark of the stream is, or the maximum preferred size of the buffer.
Hierarchy
- class \GuzzleHttp\Psr7\BufferStream implements \Psr\Http\Message\StreamInterface
Expanded class hierarchy of BufferStream
File
-
vendor/
guzzlehttp/ psr7/ src/ BufferStream.php, line 17
Namespace
GuzzleHttp\Psr7View source
final class BufferStream implements StreamInterface {
/** @var int */
private $hwm;
/** @var string */
private $buffer = '';
/**
* @param int $hwm High water mark, representing the preferred maximum
* buffer size. If the size of the buffer exceeds the high
* water mark, then calls to write will continue to succeed
* but will return 0 to inform writers to slow down
* until the buffer has been drained by reading from it.
*/
public function __construct(int $hwm = 16384) {
$this->hwm = $hwm;
}
public function __toString() : string {
return $this->getContents();
}
public function getContents() : string {
$buffer = $this->buffer;
$this->buffer = '';
return $buffer;
}
public function close() : void {
$this->buffer = '';
}
public function detach() {
$this->close();
return null;
}
public function getSize() : ?int {
return strlen($this->buffer);
}
public function isReadable() : bool {
return true;
}
public function isWritable() : bool {
return true;
}
public function isSeekable() : bool {
return false;
}
public function rewind() : void {
$this->seek(0);
}
public function seek($offset, $whence = SEEK_SET) : void {
throw new \RuntimeException('Cannot seek a BufferStream');
}
public function eof() : bool {
return strlen($this->buffer) === 0;
}
public function tell() : int {
throw new \RuntimeException('Cannot determine the position of a BufferStream');
}
/**
* Reads data from the buffer.
*/
public function read($length) : string {
$currentLength = strlen($this->buffer);
if ($length >= $currentLength) {
// No need to slice the buffer because we don't have enough data.
$result = $this->buffer;
$this->buffer = '';
}
else {
// Slice up the result to provide a subset of the buffer.
$result = substr($this->buffer, 0, $length);
$this->buffer = substr($this->buffer, $length);
}
return $result;
}
/**
* Writes data to the buffer.
*/
public function write($string) : int {
$this->buffer .= $string;
if (strlen($this->buffer) >= $this->hwm) {
return 0;
}
return strlen($string);
}
/**
* @return mixed
*/
public function getMetadata($key = null) {
if ($key === 'hwm') {
return $this->hwm;
}
return $key ? null : [];
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title |
---|---|---|---|---|
BufferStream::$buffer | private | property | @var string | |
BufferStream::$hwm | private | property | @var int | |
BufferStream::close | public | function | Closes the stream and any underlying resources. | Overrides StreamInterface::close |
BufferStream::detach | public | function | Separates any underlying resources from the stream. | Overrides StreamInterface::detach |
BufferStream::eof | public | function | Returns true if the stream is at the end of the stream. | Overrides StreamInterface::eof |
BufferStream::getContents | public | function | Returns the remaining contents in a string | Overrides StreamInterface::getContents |
BufferStream::getMetadata | public | function | Overrides StreamInterface::getMetadata | |
BufferStream::getSize | public | function | Get the size of the stream if known. | Overrides StreamInterface::getSize |
BufferStream::isReadable | public | function | Returns whether or not the stream is readable. | Overrides StreamInterface::isReadable |
BufferStream::isSeekable | public | function | Returns whether or not the stream is seekable. | Overrides StreamInterface::isSeekable |
BufferStream::isWritable | public | function | Returns whether or not the stream is writable. | Overrides StreamInterface::isWritable |
BufferStream::read | public | function | Reads data from the buffer. | Overrides StreamInterface::read |
BufferStream::rewind | public | function | Seek to the beginning of the stream. | Overrides StreamInterface::rewind |
BufferStream::seek | public | function | Seek to a position in the stream. | Overrides StreamInterface::seek |
BufferStream::tell | public | function | Returns the current position of the file read/write pointer | Overrides StreamInterface::tell |
BufferStream::write | public | function | Writes data to the buffer. | Overrides StreamInterface::write |
BufferStream::__construct | public | function | ||
BufferStream::__toString | public | function | Reads all data from the stream into a string, from the beginning to end. | Overrides StreamInterface::__toString |