/**
  * {@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));
     }
 }
Example #2
0
 /**
  * {@inheritdoc}
  */
 public function executeCommand(ICommand $command)
 {
     $resource = $this->_resource;
     $commandId = $this->getCommandId($command);
     if ($arguments = $command->getArguments()) {
         $arguments = implode('/', array_map('urlencode', $arguments));
         $serializedCommand = "{$commandId}/{$arguments}.raw";
     } else {
         $serializedCommand = "{$commandId}.raw";
     }
     curl_setopt($resource, CURLOPT_POSTFIELDS, $serializedCommand);
     if (curl_exec($resource) === false) {
         $error = curl_error($resource);
         $errno = curl_errno($resource);
         throw new ConnectionException($this, trim($error), $errno);
     }
     $readerState = phpiredis_reader_get_state($this->_reader);
     if ($readerState === PHPIREDIS_READER_STATE_COMPLETE) {
         $reply = phpiredis_reader_get_reply($this->_reader);
         if ($reply instanceof IReplyObject) {
             return $reply;
         }
         return $command->parseResponse($reply);
     } else {
         $error = phpiredis_reader_get_error($this->_reader);
         throw new ProtocolException($this, $error);
     }
 }
Example #3
0
 /**
  * {@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 executeCommand(CommandInterface $command)
 {
     $resource = $this->resource;
     $commandId = $this->getCommandId($command);
     if ($arguments = $command->getArguments()) {
         $arguments = implode('/', array_map('urlencode', $arguments));
         $serializedCommand = "{$commandId}/{$arguments}.raw";
     } else {
         $serializedCommand = "{$commandId}.raw";
     }
     curl_setopt($resource, CURLOPT_POSTFIELDS, $serializedCommand);
     if (curl_exec($resource) === false) {
         $error = curl_error($resource);
         $errno = curl_errno($resource);
         throw new ConnectionException($this, trim($error), $errno);
     }
     if (phpiredis_reader_get_state($this->reader) !== PHPIREDIS_READER_STATE_COMPLETE) {
         throw new ProtocolException($this, phpiredis_reader_get_error($this->reader));
     }
     return phpiredis_reader_get_reply($this->reader);
 }
 /**
  * {@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));
     }
 }