예제 #1
0
 /**
  * Create RequestExecutor object
  *
  * @return RequestExecutorInterface
  *
  * @api
  */
 public function createRequestExecutor()
 {
     foreach ($this->configuration->getPreferredEngines() as $engine) {
         switch ($engine) {
             case 'libevent':
                 if (extension_loaded('libevent')) {
                     return new LibEventRequestExecutor(new BaseStageFactory(), $this->configuration);
                 }
                 break;
             case 'native':
                 return new NativeRequestExecutor(new PipelineFactory(new BaseStageFactory()), $this->configuration);
         }
     }
     throw new \InvalidArgumentException('Provided configuration does not contain any supported RequestExecutor engine.');
 }
 /**
  * AbstractRequestExecutor constructor.
  *
  * @param Configuration $configuration Configuration for executor
  */
 public function __construct(Configuration $configuration)
 {
     $this->socketBag = new SocketBag($this, $configuration->getConnectTimeout(), $configuration->getIoTimeout());
 }