Subversion Repositories php-qbpwcf

Rev

Details | Last modification | View Log | RSS feed

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