(?int $length)
| 232 | } |
| 233 | |
| 234 | private function consumeAvailable(?int $length) |
| 235 | { |
| 236 | $available = $this->availableBytes(); |
| 237 | if ($available <= 0) { |
| 238 | return $this->failed ? false : ''; |
| 239 | } |
| 240 | |
| 241 | $toRead = ($length === null || $length <= 0) ? $available : min($length, $available); |
| 242 | if ($toRead <= 0 || !is_resource($this->buffer)) { |
| 243 | return $this->failed ? false : ''; |
| 244 | } |
| 245 | |
| 246 | if (@fseek($this->buffer, $this->readOffset) !== 0) { |
| 247 | $this->fail('Unable to seek WebDAV read buffer.'); |
| 248 | return false; |
| 249 | } |
| 250 | |
| 251 | $data = @fread($this->buffer, $toRead); |
| 252 | if ($data === false) { |
| 253 | $this->fail('Unable to read WebDAV buffer.'); |
| 254 | return false; |
| 255 | } |
| 256 | |
| 257 | $this->readOffset += strlen($data); |
| 258 | if ($this->readOffset >= $this->writeOffset) { |
| 259 | $this->resetBufferIfDrained(); |
| 260 | } |
| 261 | |
| 262 | return $data; |
| 263 | } |
| 264 | |
| 265 | private function availableBytes(): int |
| 266 | { |
no test coverage detected