コード例 #1
0
 /**
  * {@inheritdoc}
  */
 public function process(CommandInterface $command)
 {
     if ($command instanceof PrefixableCommandInterface) {
         $command->prefixKeys($this->prefix);
     } elseif (isset($this->commands[$commandID = strtoupper($command->getId())])) {
         call_user_func($this->commands[$commandID], $command, $this->prefix);
     }
 }
コード例 #2
0
 /**
  * {@inheritdoc}
  */
 public function serialize(CommandInterface $command)
 {
     $commandID = $command->getId();
     $arguments = $command->getArguments();
     $cmdlen = strlen($commandID);
     $reqlen = count($arguments) + 1;
     $buffer = "*{$reqlen}\r\n\${$cmdlen}\r\n{$commandID}\r\n";
     for ($i = 0, $reqlen--; $i < $reqlen; ++$i) {
         $argument = $arguments[$i];
         $arglen = strlen($argument);
         $buffer .= "\${$arglen}\r\n{$argument}\r\n";
     }
     return $buffer;
 }
コード例 #3
0
 /**
  * Checks if the specified command is supported by this connection class.
  *
  * @param CommandInterface $command Command instance.
  *
  * @throws NotSupportedException
  *
  * @return string
  */
 protected function getCommandId(CommandInterface $command)
 {
     switch ($commandID = $command->getId()) {
         case 'AUTH':
         case 'SELECT':
         case 'MULTI':
         case 'EXEC':
         case 'WATCH':
         case 'UNWATCH':
         case 'DISCARD':
         case 'MONITOR':
             throw new NotSupportedException("Command '{$commandID}' is not allowed by Webdis.");
         default:
             return $commandID;
     }
 }
コード例 #4
0
 /**
  * Returns if the specified command is not allowed for execution in a master
  * / slave replication context.
  *
  * @param CommandInterface $command Command instance.
  *
  * @return bool
  */
 public function isDisallowedOperation(CommandInterface $command)
 {
     return isset($this->disallowed[$command->getId()]);
 }
コード例 #5
0
 /**
  * {@inheritdoc}
  */
 public function writeRequest(CommandInterface $command)
 {
     $commandID = $command->getId();
     $arguments = $command->getArguments();
     $cmdlen = strlen($commandID);
     $reqlen = count($arguments) + 1;
     $buffer = "*{$reqlen}\r\n\${$cmdlen}\r\n{$commandID}\r\n";
     for ($i = 0, $reqlen--; $i < $reqlen; ++$i) {
         $argument = $arguments[$i];
         $arglen = strlen($argument);
         $buffer .= "\${$arglen}\r\n{$argument}\r\n";
     }
     $this->write($buffer);
 }
コード例 #6
0
 /**
  * {@inheritdoc}
  */
 public function writeRequest(CommandInterface $command)
 {
     $arguments = $command->getArguments();
     array_unshift($arguments, $command->getId());
     $this->write(phpiredis_format_command($arguments));
 }
コード例 #7
0
 /**
  * {@inheritdoc}
  */
 public function getSlot(CommandInterface $command)
 {
     $slot = $command->getSlot();
     if (!isset($slot) && isset($this->commands[$cmdID = $command->getId()])) {
         $key = call_user_func($this->commands[$cmdID], $command);
         if (isset($key)) {
             $slot = $this->getSlotByKey($key);
             $command->setSlot($slot);
         }
     }
     return $slot;
 }