/** * Does grunt work of finishing a request. * * @ignore * @param \BLW\Type\HTTP\IRequest $Request */ private function _finish(IRequest $Request) { // Validate $Request if ($this->contains($Request)) { if (($Response = $this[$Request]) instanceof IResponse) { $Handle = $Response['handle']; // Create Response // Is code known? if ($Response->isValidCode(intval(curl_getinfo($Handle, CURLINFO_HTTP_CODE)))) { // parse response $Response = Response::createFromString(curl_multi_getcontent($Handle)); // Update handle $Response['handle'] = $Handle; // RequestURI $Response->setRequestURI($Request->getURI()); // Update $this[$Request] = $Response; } // Update finished flag $Response['Running'] = false; $Response['Finished'] = true; // Update info $this->_update($Request); // Free Handle $this->_Helper->freeHandle($Handle); // Does mediator exist? if ($this->_Mediator instanceof IMediator) { // Request.Finished event $this->_do('Request.Finished', new Event($this, array('Request' => &$Request, 'Response' => &$Response))); } } } }
/** * @depends test_construct * @covers ::freeHandle */ public function test_freeHandle() { $Handle = array_pop($this->Helper->FreeHandles); $this->Helper->Stats['HostConnections']['bar.com'] = array(1, 2, 3, 4); $this->Helper->Stats['HostConnections']['foo.com'] = array($Handle); $this->Helper->Stats['HostConnections']['pie.com'] = array(1, 2, $Handle, 3, 4); $this->Helper->freeHandle($Handle); $this->assertCount(5, $this->Helper->FreeHandles, 'Helper::freeHandle() Failed to add handle to free list'); $this->assertSame($Handle, $this->Helper->FreeHandles[4], 'Helper::freeHandle() Failed to add handle to free list'); $this->assertArrayNotHasKey('foo.com', $this->Helper->Stats['HostConnections'], 'Helper::freeHandle() Failed to update host connections'); $this->assertCount(4, $this->Helper->Stats['HostConnections']['bar.com'], 'Helper::freeHandle() Failed to update host connections'); $this->assertCount(4, $this->Helper->Stats['HostConnections']['pie.com'], 'Helper::freeHandle() Failed to update host connections'); try { $this->Helper->freeHandle(null); $this->fail('Failed to generate exception with invalid arguments'); } catch (InvalidArgumentException $e) { } }