/** * {@inheritdoc} */ public function parseResponseBuffer($buffer) { phpiredis_reader_feed($reader = $this->reader, $buffer); while (phpiredis_reader_get_state($reader) === PHPIREDIS_READER_STATE_COMPLETE) { $this->state->process(phpiredis_reader_get_reply($reader)); } }
/** * Feeds phpredis' reader resource with the data read from the network. * * @param resource $resource Reader resource. * @param string $buffer Buffer with the reply read from the network. * @return int */ protected function feedReader($resource, $buffer) { phpiredis_reader_feed($this->_reader, $buffer); return strlen($buffer); }
/** * {@inheritdoc} */ public function read() { $socket = $this->getResource(); $reader = $this->reader; while (PHPIREDIS_READER_STATE_INCOMPLETE === ($state = phpiredis_reader_get_state($reader))) { if (@socket_recv($socket, $buffer, 4096, 0) === false || $buffer === '' || $buffer === null) { $this->emitSocketError(); } phpiredis_reader_feed($reader, $buffer); } if ($state === PHPIREDIS_READER_STATE_COMPLETE) { return phpiredis_reader_get_reply($reader); } else { $this->onProtocolError(phpiredis_reader_get_error($reader)); return; } }
/** * {@inheritdoc} */ public function read() { $socket = $this->getResource(); $reader = $this->reader; while (PHPIREDIS_READER_STATE_INCOMPLETE === ($state = phpiredis_reader_get_state($reader))) { $buffer = stream_socket_recvfrom($socket, 4096); if ($buffer === false || $buffer === '') { $this->onConnectionError('Error while reading bytes from the server'); } phpiredis_reader_feed($reader, $buffer); } if ($state === PHPIREDIS_READER_STATE_COMPLETE) { return phpiredis_reader_get_reply($reader); } else { $this->onProtocolError(phpiredis_reader_get_error($reader)); } }
/** * {@inheritdoc} */ public function read() { $buffer = stream_socket_recvfrom($this->getResource(), 4096); if ($buffer === false || $buffer === '') { return $this->onError(new ConnectionException($this, 'Error while reading bytes from the server')); } phpiredis_reader_feed($reader = $this->reader, $buffer); while (phpiredis_reader_get_state($reader) === PHPIREDIS_READER_STATE_COMPLETE) { $this->state->process(phpiredis_reader_get_reply($reader)); } }