You are here

class DroppingStream in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/guzzlehttp/psr7/src/DroppingStream.php \GuzzleHttp\Psr7\DroppingStream

Stream decorator that begins dropping data once the size of the underlying stream becomes too full.

Hierarchy

Expanded class hierarchy of DroppingStream

1 file declares its use of DroppingStream
DroppingStreamTest.php in vendor/guzzlehttp/psr7/tests/DroppingStreamTest.php

File

vendor/guzzlehttp/psr7/src/DroppingStream.php, line 10

Namespace

GuzzleHttp\Psr7
View source
class DroppingStream implements StreamInterface {
  use StreamDecoratorTrait;
  private $maxLength;

  /**
   * @param StreamInterface $stream    Underlying stream to decorate.
   * @param int             $maxLength Maximum size before dropping data.
   */
  public function __construct(StreamInterface $stream, $maxLength) {
    $this->stream = $stream;
    $this->maxLength = $maxLength;
  }
  public function write($string) {
    $diff = $this->maxLength - $this->stream
      ->getSize();

    // Begin returning 0 when the underlying stream is too large.
    if ($diff <= 0) {
      return 0;
    }

    // Write the stream or a subset of the stream if needed.
    if (strlen($string) < $diff) {
      return $this->stream
        ->write($string);
    }
    return $this->stream
      ->write(substr($string, 0, $diff));
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DroppingStream::$maxLength private property
DroppingStream::write public function Write data to the stream. Overrides StreamDecoratorTrait::write
DroppingStream::__construct public function Overrides StreamDecoratorTrait::__construct
StreamDecoratorTrait::close public function 1
StreamDecoratorTrait::createStream protected function Implement in subclasses to dynamically create streams when requested. 2
StreamDecoratorTrait::detach public function
StreamDecoratorTrait::eof public function 2
StreamDecoratorTrait::getContents public function
StreamDecoratorTrait::getMetadata public function
StreamDecoratorTrait::getSize public function 2
StreamDecoratorTrait::isReadable public function
StreamDecoratorTrait::isSeekable public function 1
StreamDecoratorTrait::isWritable public function 1
StreamDecoratorTrait::read public function 2
StreamDecoratorTrait::rewind public function 1
StreamDecoratorTrait::seek public function 3
StreamDecoratorTrait::tell public function 1
StreamDecoratorTrait::__call public function Allow decorators to implement custom methods
StreamDecoratorTrait::__get public function Magic method used to create a new stream if streams are not added in the constructor of a decorator (e.g., LazyOpenStream).
StreamDecoratorTrait::__toString public function