Esempio n. 1
0
 /**
  * Handles a bulk reply returned by Redis.
  *
  * @param ComposableConnectionInterface $connection Connection to Redis.
  * @param string $lengthString Bytes size of the bulk reply.
  * @return string
  */
 public function handle(ComposableConnectionInterface $connection, $lengthString)
 {
     $length = (int) $lengthString;
     if ("{$length}" !== $lengthString) {
         CommunicationException::handle(new ProtocolException($connection, "Cannot parse '{$lengthString}' as bulk length"));
     }
     if ($length >= 0) {
         return substr($connection->readBytes($length + 2), 0, -2);
     }
     if ($length == -1) {
         return null;
     }
 }
 /**
  * {@inheritdoc}
  */
 public function read(ComposableConnectionInterface $connection)
 {
     $chunk = $connection->readLine();
     $prefix = $chunk[0];
     $payload = substr($chunk, 1);
     switch ($prefix) {
         case '+':
             // inline
             switch ($payload) {
                 case 'OK':
                     return true;
                 case 'QUEUED':
                     return new ResponseQueued();
                 default:
                     return $payload;
             }
         case '$':
             // bulk
             $size = (int) $payload;
             if ($size === -1) {
                 return null;
             }
             return substr($connection->readBytes($size + 2), 0, -2);
         case '*':
             // multi bulk
             $count = (int) $payload;
             if ($count === -1) {
                 return null;
             }
             if ($this->mbiterable == true) {
                 return new MultiBulkResponseSimple($connection, $count);
             }
             $multibulk = array();
             for ($i = 0; $i < $count; $i++) {
                 $multibulk[$i] = $this->read($connection);
             }
             return $multibulk;
         case ':':
             // integer
             return (int) $payload;
         case '-':
             // error
             return new ResponseError($payload);
         default:
             Helpers::onCommunicationException(new ProtocolException($connection, "Unknown prefix: '{$prefix}'"));
     }
 }