mantis-matrix-integration – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 <?php
2  
3 declare(strict_types=1);
4  
5 namespace GuzzleHttp\Psr7;
6  
7 use Psr\Http\Message\StreamInterface;
8  
9 /**
10 * Stream decorator that begins dropping data once the size of the underlying
11 * stream becomes too full.
12 */
13 final class DroppingStream implements StreamInterface
14 {
15 use StreamDecoratorTrait;
16  
17 /** @var int */
18 private $maxLength;
19  
20 /** @var StreamInterface */
21 private $stream;
22  
23 /**
24 * @param StreamInterface $stream Underlying stream to decorate.
25 * @param int $maxLength Maximum size before dropping data.
26 */
27 public function __construct(StreamInterface $stream, int $maxLength)
28 {
29 $this->stream = $stream;
30 $this->maxLength = $maxLength;
31 }
32  
33 public function write($string): int
34 {
35 $diff = $this->maxLength - $this->stream->getSize();
36  
37 // Begin returning 0 when the underlying stream is too large.
38 if ($diff <= 0) {
39 return 0;
40 }
41  
42 // Write the stream or a subset of the stream if needed.
43 if (strlen($string) < $diff) {
44 return $this->stream->write($string);
45 }
46  
47 return $this->stream->write(substr($string, 0, $diff));
48 }
49 }