[ Index ]

PHP Cross Reference of phpBB-3.3.2-deutsch

title

Body

[close]

/vendor/guzzlehttp/psr7/src/ -> BufferStream.php (source)

   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  }


Generated: Wed Nov 11 20:28:18 2020 Cross-referenced by PHPXref 0.7.1