Beispiel #1
0
 /**
  * {@inheritdoc}
  */
 public function execute(IConnection $connection, &$commands)
 {
     $sizeofPipe = count($commands);
     $values = array();
     foreach ($commands as $command) {
         try {
             $connection->writeCommand($command);
         } catch (CommunicationException $exception) {
             return array_fill(0, $sizeofPipe, $exception);
         }
     }
     for ($i = 0; $i < $sizeofPipe; $i++) {
         $command = $commands[$i];
         unset($commands[$i]);
         try {
             $response = $connection->readResponse($command);
             $values[] = $response instanceof \Iterator ? iterator_to_array($response) : $response;
         } catch (ServerException $exception) {
             $values[] = $exception->toResponseError();
         } catch (CommunicationException $exception) {
             $toAdd = count($commands) - count($values);
             $values = array_merge($values, array_fill(0, $toAdd, $exception));
             break;
         }
     }
     return $values;
 }
 /**
  * {@inheritdoc}
  */
 public function execute(IConnection $connection, &$commands)
 {
     foreach ($commands as $command) {
         $connection->writeCommand($command);
     }
     $connection->disconnect();
     return array();
 }
Beispiel #3
0
 /**
  * {@inheritdoc}
  */
 public function execute(IConnection $connection, &$commands)
 {
     $sizeofPipe = count($commands);
     $values = array();
     foreach ($commands as $command) {
         $connection->writeCommand($command);
     }
     try {
         for ($i = 0; $i < $sizeofPipe; $i++) {
             $response = $connection->readResponse($commands[$i]);
             $values[] = $response instanceof \Iterator ? iterator_to_array($response) : $response;
             unset($commands[$i]);
         }
     } catch (ServerException $exception) {
         // Force disconnection to prevent protocol desynchronization.
         $connection->disconnect();
         throw $exception;
     }
     return $values;
 }
 /**
  * {@inheritdoc}
  */
 public function execute(IConnection $connection, &$commands)
 {
     $connectionExceptions = array();
     $sizeofPipe = count($commands);
     $values = array();
     foreach ($commands as $command) {
         $cmdConnection = $connection->getConnection($command);
         if (isset($connectionExceptions[spl_object_hash($cmdConnection)])) {
             continue;
         }
         try {
             $cmdConnection->writeCommand($command);
         } catch (CommunicationException $exception) {
             $connectionExceptions[spl_object_hash($cmdConnection)] = $exception;
         }
     }
     for ($i = 0; $i < $sizeofPipe; $i++) {
         $command = $commands[$i];
         unset($commands[$i]);
         $cmdConnection = $connection->getConnection($command);
         $connectionObjectHash = spl_object_hash($cmdConnection);
         if (isset($connectionExceptions[$connectionObjectHash])) {
             $values[] = $connectionExceptions[$connectionObjectHash];
             continue;
         }
         try {
             $response = $cmdConnection->readResponse($command);
             $values[] = $response instanceof \Iterator ? iterator_to_array($response) : $response;
         } catch (ServerException $exception) {
             $values[] = $exception->toResponseError();
         } catch (CommunicationException $exception) {
             $values[] = $exception;
             $connectionExceptions[$connectionObjectHash] = $exception;
         }
     }
     return $values;
 }
Beispiel #5
0
 /**
  * Allows the pipeline executor to perform operations on the
  * connection before starting to execute the commands stored
  * in the pipeline.
  *
  * @param IConnection Connection instance.
  */
 protected function checkConnection(IConnection $connection)
 {
     if ($connection instanceof IConnectionReplication) {
         $connection->switchTo('master');
     }
 }