Ejemplo n.º 1
0
 /**
  * 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)));
             }
         }
     }
 }
Ejemplo n.º 2
0
 /**
  * @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) {
     }
 }