/** * Prepare for sending * * @param RequestInterface $request Request to prepare * @throws \Exception on error preparing the request */ protected function beforeSend(RequestInterface $request) { try { $state = $request->setState(RequestInterface::STATE_TRANSFER); if ($state == RequestInterface::STATE_TRANSFER) { $this->addHandle($request); } else { // Requests might decide they don't need to be sent just before // transfer (e.g. CachePlugin) $this->remove($request); if ($state == RequestInterface::STATE_COMPLETE) { $this->successful[] = $request; } } } catch (\Exception $e) { // Queue the exception to be thrown when sent $this->removeErroredRequest($request, $e); } }
/** * Prepare for sending * * @param RequestInterface $request Request to prepare * @throws \Exception on error preparing the request */ protected function beforeSend(RequestInterface $request) { try { // Fix Content-Length and Transfer-Encoding collisions if ($request->hasHeader('Transfer-Encoding') && $request->hasHeader('Content-Length')) { $request->removeHeader('Transfer-Encoding'); } $request->setState(RequestInterface::STATE_TRANSFER); $request->dispatch('request.before_send', array('request' => $request)); if ($request->getState() != RequestInterface::STATE_TRANSFER) { // Requests might decide they don't need to be sent just before transfer (e.g. CachePlugin) $this->remove($request); if ($request->getState() == RequestInterface::STATE_COMPLETE) { $this->successful[] = $request; } } else { // Add the request curl handle to the multi handle $this->checkCurlResult(curl_multi_add_handle($this->multiHandle, $this->createCurlHandle($request)->getHandle())); } } catch (\Exception $e) { // Queue the exception to be thrown when sent $this->removeErroredRequest($request, $e); } }
/** * Prepare for sending * * @param RequestInterface $request Request to prepare * @throws \Exception on error preparing the request */ protected function beforeSend(RequestInterface $request) { try { $state = $request->setState(RequestInterface::STATE_TRANSFER); if ($state == RequestInterface::STATE_TRANSFER) { // Add the request curl handle to the multi handle $handle = $this->createCurlHandle($request)->getHandle(); $this->checkCurlResult(curl_multi_add_handle($this->multiHandle, $handle)); } else { // Requests might decide they don't need to be sent just before transfer (e.g. CachePlugin) $this->remove($request); if ($state == RequestInterface::STATE_COMPLETE) { $this->successful[] = $request; } } } catch (\Exception $e) { // Queue the exception to be thrown when sent $this->removeErroredRequest($request, $e); } }
/** * Trigger a request to retry * * @param RequestInterface $request Request to retry */ protected function retryRequest(RequestInterface $request) { $params = $request->getParams(); $retries = (int) $params->get(self::RETRY_PARAM) + 1; $params->set(self::RETRY_PARAM, $retries); // If this request has been retried too many times, then throw an exception if ($retries <= $this->maxRetries) { // Calculate how long to wait until the request should be retried $delay = call_user_func($this->delayClosure, $retries); $delayTime = microtime(true) + $delay; // Send the request again $request->setState(RequestInterface::STATE_TRANSFER); $params->set(self::DELAY_PARAM, $delay); } }
/** * Prepare for sending * * @param RequestInterface $request Request to prepare */ protected function beforeSend(RequestInterface $request) { try { $request->setState(RequestInterface::STATE_TRANSFER); $request->dispatch('request.before_send', array('request' => $request)); if ($request->getState() != RequestInterface::STATE_TRANSFER) { // Requests might decide they don't need to be sent just before // transfer (e.g. CachePlugin) $this->remove($request); } else { if ($request->getParams()->get('queued_response')) { // Queued responses do not need to be sent using curl $this->remove($request); $request->setState(RequestInterface::STATE_COMPLETE); } else { // Add the request's curl handle to the multi handle $this->checkCurlResult(curl_multi_add_handle($this->multiHandle, $this->createCurlHandle($request)->getHandle())); } } } catch (\Exception $e) { $this->removeErroredRequest($request, $e); } }
protected function beforeSend(RequestInterface $request) { try { $state = $request->setState(RequestInterface::STATE_TRANSFER); if ($state == RequestInterface::STATE_TRANSFER) { $handle = $this->createCurlHandle($request)->getHandle(); $this->checkCurlResult(curl_multi_add_handle($this->multiHandle, $handle)); } else { $this->remove($request); if ($state == RequestInterface::STATE_COMPLETE) { $this->successful[] = $request; } } } catch (\Exception $e) { $this->removeErroredRequest($request, $e); } }