/** * {@inheritdoc} */ protected function executePipeline(ConnectionInterface $connection, \SplQueue $commands) { while (!$commands->isEmpty()) { $connection->writeRequest($commands->dequeue()); } $connection->disconnect(); return array(); }
/** * {@inheritdoc} */ protected function executePipeline(ConnectionInterface $connection, \SplQueue $commands) { $profile = $this->getClient()->getProfile(); $connection->executeCommand($profile->createCommand('multi')); foreach ($commands as $command) { $connection->writeRequest($command); } foreach ($commands as $command) { $response = $connection->readResponse($command); if ($response instanceof ErrorResponseInterface) { $connection->executeCommand($profile->createCommand('discard')); throw new ServerException($response->getMessage()); } } $executed = $connection->executeCommand($profile->createCommand('exec')); if (!isset($executed)) { // TODO: should be throwing a more appropriate exception. throw new ClientException('The underlying transaction has been aborted by the server.'); } if (count($executed) !== count($commands)) { $expected = count($commands); $received = count($executed); throw new ClientException("Invalid number of responses [expected {$expected}, received {$received}]."); } $responses = array(); $sizeOfPipe = count($commands); $exceptions = $this->throwServerExceptions(); for ($i = 0; $i < $sizeOfPipe; ++$i) { $command = $commands->dequeue(); $response = $executed[$i]; if (!$response instanceof ResponseInterface) { $responses[] = $command->parseResponse($response); } elseif ($response instanceof ErrorResponseInterface && $exceptions) { $this->exception($connection, $response); } else { $responses[] = $response; } unset($executed[$i]); } return $responses; }
/** * Implements the logic to flush the queued commands and read the responses * from the current connection. * * @param ConnectionInterface $connection Current connection instance. * @param \SplQueue $commands Queued commands. * * @return array */ protected function executePipeline(ConnectionInterface $connection, \SplQueue $commands) { foreach ($commands as $command) { $connection->writeRequest($command); } $responses = array(); $exceptions = $this->throwServerExceptions(); while (!$commands->isEmpty()) { $command = $commands->dequeue(); $response = $connection->readResponse($command); if (!$response instanceof ResponseInterface) { $responses[] = $command->parseResponse($response); } elseif ($response instanceof ErrorResponseInterface && $exceptions) { $this->exception($connection, $response); } else { $responses[] = $response; } } return $responses; }