예제 #1
0
 public function testNotExistentMetadataUsingNoDefaultValue()
 {
     $event = new Event('my_event_name', ['my_event_data_key1' => 'my_event_data_value1']);
     $this->assertNull($event->getData('my_event_data_key2'));
 }
 /**
  * @param ClientInterface $client
  * @param string $buffer
  * @param int $length
  * @param bool $isError
  * @return RequestHandlerInterface
  */
 public function __invoke(Event $event, ClientInterface $client, $buffer, $length, $isError)
 {
     if ($isError) {
         $this->getLogger()->error(sprintf('%s encountered an error.', __METHOD__));
         (new Response())->setReturnCode(500, 'Internal Server Error')->setBody('Server Error')->setHeader('Connection', 'close')->send($client);
         return $this;
     }
     if (($request = $this->initRequest($client, $buffer, $length)) === null) {
         return $this;
     }
     if (($response = $this->initResponse($client)) === null) {
         return $this;
     }
     if ($this->setupUpgrades($client, $request, $response)) {
         return $this;
     }
     $response->on(['ready'], function (Event $event) use($client, $request) {
         $response = $event->getData('eventEmitter');
         $response->send($client);
     });
     // FIXME: what if the request was chunked?
     // FIXME: what if the request does not close after response?
     $this->emit(new Event('request'), [$client, $request, $response]);
     return $this;
 }