/** * 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()); }