PluginProbe ʕ •ᴥ•ʔ
Check & Log Email – Easy Email Testing & Mail logging / 2.0.15
Check & Log Email – Easy Email Testing & Mail logging v2.0.15
2.0.15 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 2.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.13.1 2.0.13.2 2.0.14 2.0.2 2.0.3 2.0.4 2.0.5 2.0.5.1 2.0.6 2.0.7 2.0.8 2.0.9 trunk 0.5.7 0.6.0 0.6.1 0.6.2 1.0.0 1.0.1 1.0.10 1.0.11 1.0.12 1.0.12.1 1.0.13 1.0.13.1 1.0.2 1.0.3
check-email / vendor / guzzlehttp / psr7 / src / BufferStream.php
check-email / vendor / guzzlehttp / psr7 / src Last commit date
Exception 1 week ago AppendStream.php 1 week ago BufferStream.php 1 week ago CachingStream.php 1 week ago DroppingStream.php 1 week ago FnStream.php 1 week ago Header.php 1 week ago HttpFactory.php 1 week ago InflateStream.php 1 week ago LazyOpenStream.php 1 week ago LimitStream.php 1 week ago Message.php 1 week ago MessageTrait.php 1 week ago MimeType.php 1 week ago MultipartStream.php 1 week ago NoSeekStream.php 1 week ago PumpStream.php 1 week ago Query.php 1 week ago Request.php 1 week ago Response.php 1 week ago Rfc7230.php 1 week ago ServerRequest.php 1 week ago Stream.php 1 week ago StreamDecoratorTrait.php 1 week ago StreamWrapper.php 1 week ago UploadedFile.php 1 week ago Uri.php 1 week ago UriComparator.php 1 week ago UriNormalizer.php 1 week ago UriResolver.php 1 week ago Utils.php 1 week ago
BufferStream.php
148 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace GuzzleHttp\Psr7;
6
7 use Psr\Http\Message\StreamInterface;
8
9 /**
10 * Provides a buffer stream that can be written to to fill a buffer, and read
11 * from to remove bytes from the buffer.
12 *
13 * This stream returns a "hwm" metadata value that tells upstream consumers
14 * what the configured high water mark of the stream is, or the maximum
15 * preferred size of the buffer.
16 */
17 final class BufferStream implements StreamInterface
18 {
19 /** @var int */
20 private $hwm;
21
22 /** @var string */
23 private $buffer = '';
24
25 /**
26 * @param int $hwm High water mark, representing the preferred maximum
27 * buffer size. If the size of the buffer exceeds the high
28 * water mark, then calls to write will continue to succeed
29 * but will return 0 to inform writers to slow down
30 * until the buffer has been drained by reading from it.
31 */
32 public function __construct(int $hwm = 16384)
33 {
34 $this->hwm = $hwm;
35 }
36
37 public function __toString(): string
38 {
39 return $this->getContents();
40 }
41
42 public function getContents(): string
43 {
44 $buffer = $this->buffer;
45 $this->buffer = '';
46
47 return $buffer;
48 }
49
50 public function close(): void
51 {
52 $this->buffer = '';
53 }
54
55 public function detach()
56 {
57 $this->close();
58
59 return null;
60 }
61
62 public function getSize(): ?int
63 {
64 return strlen($this->buffer);
65 }
66
67 public function isReadable(): bool
68 {
69 return true;
70 }
71
72 public function isWritable(): bool
73 {
74 return true;
75 }
76
77 public function isSeekable(): bool
78 {
79 return false;
80 }
81
82 public function rewind(): void
83 {
84 $this->seek(0);
85 }
86
87 public function seek($offset, $whence = SEEK_SET): void
88 {
89 throw new \RuntimeException('Cannot seek a BufferStream');
90 }
91
92 public function eof(): bool
93 {
94 return strlen($this->buffer) === 0;
95 }
96
97 public function tell(): int
98 {
99 throw new \RuntimeException('Cannot determine the position of a BufferStream');
100 }
101
102 /**
103 * Reads data from the buffer.
104 */
105 public function read($length): string
106 {
107 $currentLength = strlen($this->buffer);
108
109 if ($length >= $currentLength) {
110 // No need to slice the buffer because we don't have enough data.
111 $result = $this->buffer;
112 $this->buffer = '';
113 } else {
114 // Slice up the result to provide a subset of the buffer.
115 $result = substr($this->buffer, 0, $length);
116 $this->buffer = substr($this->buffer, $length);
117 }
118
119 return $result;
120 }
121
122 /**
123 * Writes data to the buffer.
124 */
125 public function write($string): int
126 {
127 $this->buffer .= $string;
128
129 if (strlen($this->buffer) >= $this->hwm) {
130 return 0;
131 }
132
133 return strlen($string);
134 }
135
136 /**
137 * @return mixed
138 */
139 public function getMetadata($key = null)
140 {
141 if ($key === 'hwm') {
142 return $this->hwm;
143 }
144
145 return $key ? null : [];
146 }
147 }
148