Ejemplo n.º 1
0
 public function onRead($socket, Listener $listener)
 {
     /** @var \Aurora\Client $client */
     $client = $listener->getArgument();
     $segment = socket_read($socket, $this->bind->getConfig()->socket_read_buffer_size);
     if (false === $segment) {
         $no = socket_last_error($socket);
         $message = $no != 0 ? socket_strerror($no) : '';
         $listener->delete();
         $client->close();
         throw new Exception($message, $no);
     } elseif ("" === $segment) {
         $listener->delete();
         $client->close();
     } else {
         if (!$this->bind->getTimestamp()->has(ServerTimestampType::SocketFirstRead)) {
             $this->bind->getTimestamp()->mark(ServerTimestampType::SocketFirstRead);
         }
         $this->bind->getTimestamp()->mark(ServerTimestampType::SocketLastRead);
         $client->getPipeline()->append($segment);
     }
 }
Ejemplo n.º 2
0
 public function onSend($socket, Listener $listener)
 {
     socket_write($socket, $this->buffer);
     $this->clear();
     $listener->delete();
     $this->event->free($listener->getName(), $listener, true);
 }