[ Index ] |
PHP Cross Reference of phpBB-3.3.3-deutsch |
[Summary view] [Print] [Text view]
1 <?php 2 3 namespace GuzzleHttp\Psr7; 4 5 use Psr\Http\Message\StreamInterface; 6 7 /** 8 * Provides a buffer stream that can be written to to fill a buffer, and read 9 * from to remove bytes from the buffer. 10 * 11 * This stream returns a "hwm" metadata value that tells upstream consumers 12 * what the configured high water mark of the stream is, or the maximum 13 * preferred size of the buffer. 14 */ 15 class BufferStream implements StreamInterface 16 { 17 private $hwm; 18 private $buffer = ''; 19 20 /** 21 * @param int $hwm High water mark, representing the preferred maximum 22 * buffer size. If the size of the buffer exceeds the high 23 * water mark, then calls to write will continue to succeed 24 * but will return false to inform writers to slow down 25 * until the buffer has been drained by reading from it. 26 */ 27 public function __construct($hwm = 16384) 28 { 29 $this->hwm = $hwm; 30 } 31 32 public function __toString() 33 { 34 return $this->getContents(); 35 } 36 37 public function getContents() 38 { 39 $buffer = $this->buffer; 40 $this->buffer = ''; 41 42 return $buffer; 43 } 44 45 public function close() 46 { 47 $this->buffer = ''; 48 } 49 50 public function detach() 51 { 52 $this->close(); 53 54 return null; 55 } 56 57 public function getSize() 58 { 59 return strlen($this->buffer); 60 } 61 62 public function isReadable() 63 { 64 return true; 65 } 66 67 public function isWritable() 68 { 69 return true; 70 } 71 72 public function isSeekable() 73 { 74 return false; 75 } 76 77 public function rewind() 78 { 79 $this->seek(0); 80 } 81 82 public function seek($offset, $whence = SEEK_SET) 83 { 84 throw new \RuntimeException('Cannot seek a BufferStream'); 85 } 86 87 public function eof() 88 { 89 return strlen($this->buffer) === 0; 90 } 91 92 public function tell() 93 { 94 throw new \RuntimeException('Cannot determine the position of a BufferStream'); 95 } 96 97 /** 98 * Reads data from the buffer. 99 */ 100 public function read($length) 101 { 102 $currentLength = strlen($this->buffer); 103 104 if ($length >= $currentLength) { 105 // No need to slice the buffer because we don't have enough data. 106 $result = $this->buffer; 107 $this->buffer = ''; 108 } else { 109 // Slice up the result to provide a subset of the buffer. 110 $result = substr($this->buffer, 0, $length); 111 $this->buffer = substr($this->buffer, $length); 112 } 113 114 return $result; 115 } 116 117 /** 118 * Writes data to the buffer. 119 */ 120 public function write($string) 121 { 122 $this->buffer .= $string; 123 124 // TODO: What should happen here? 125 if (strlen($this->buffer) >= $this->hwm) { 126 return false; 127 } 128 129 return strlen($string); 130 } 131 132 public function getMetadata($key = null) 133 { 134 if ($key == 'hwm') { 135 return $this->hwm; 136 } 137 138 return $key ? null : []; 139 } 140 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Feb 14 20:08:31 2021 | Cross-referenced by PHPXref 0.7.1 |