コード例 #1
0
ファイル: Events.php プロジェクト: panlatent/aurora
 public function register()
 {
     $listener = new Listener($this->event, $this->bind->getSocket(), \Event::READ | \Event::PERSIST);
     $listener->register(static::EVENT_SOCKET_ACCEPT);
     $listener->listen();
     $listener = Listener::timer($this->event, true);
     $listener->register(static::EVENT_TIMER);
     $listener->listen(1);
 }
コード例 #2
0
ファイル: WriteBuffer.php プロジェクト: panlatent/aurora
 public function write($content)
 {
     if (!$this->status) {
         $this->buffer = $content;
         $listener = new Listener($this->event, $this->socket, \Event::WRITE);
         $listener->register(static::EVENT_BUFFER_SEND);
         $listener->listen();
     } else {
         if (strlen($content) + strlen($this->buffer) <= $this->size) {
             $this->buffer .= $content;
         } else {
             // If buffer filled
             $time = (int) (strlen($content) / $this->size);
             socket_write($this->socket, $this->buffer);
             for ($i = 0; $i < $time; ++$i) {
                 socket_write($this->socket, substr($content, $i * $this->size, $this->size));
             }
             $this->buffer = substr($content, $this->size * $time);
         }
     }
 }