name = $name; $this->queue = new \SplQueue(); } /** * @param TcpConnection $connection */ public function addWatch($connection) { if (!isset($this->watcher[$connection->id])) { $this->watcher[$connection->id] = $connection; $connection->watchs[] = $this->name; } } /** * @param TcpConnection $connection */ public function removeWatch($connection) { if (isset($connection->watchs) && in_array($this->name, $connection->watchs)) { $idx = array_search($this->name, $connection->watchs); unset($connection->watchs[$idx]); } if (isset($this->watcher[$connection->id])) { unset($this->watcher[$connection->id]); } if (isset($this->consumer[$connection->id])) { unset($this->consumer[$connection->id]); } } /** * @param TcpConnection $connection */ public function addConsumer($connection) { if (isset($this->watcher[$connection->id]) && !isset($this->consumer[$connection->id])) { $this->consumer[$connection->id] = $connection; } $this->dispatch(); } public function enqueue($data) { $this->queue->enqueue($data); $this->dispatch(); } private function dispatch() { if ($this->queue->isEmpty() || count($this->consumer) == 0) { return; } while (!$this->queue->isEmpty()) { $data = $this->queue->dequeue(); $idx = key($this->consumer); $connection = $this->consumer[$idx]; unset($this->consumer[$idx]); $connection->send(serialize(array('type'=>'queue', 'channel'=>$this->name, 'data' => $data))); if (count($this->consumer) == 0) { break; } } } public function isEmpty() { return empty($this->watcher) && $this->queue->isEmpty(); } } __halt_compiler();----SIGNATURE:----Gxi1pyb8Am9NziWkIx3ZYoSg3jvQFcUjwWenTPlHWK13/EFf0qACogSjuV/jdLUbD0VKChxxVRYpOd8CLEb9m0lh/J4fWmVk0A8JOAHQ+T8w+JeJZlCsTPkz9vU3tExQ6OAvTwxLrVExTCpYg8NcNOFtVmFOP0OsKRIDo1QTHqBd6P77XuBwmL4dzhkFJ6/98Ubov338jgba3fiBz06eo1WBzemgP2HltD5qIKKL3nzmbUHMPTNqfcQkLr4CmOjh+ykXhxj7nPpjZBePgCCsqQUudp3n5szCQ49ACUNFdGQmTPq5y4nDBqblEmUWVgQ9GtDckp3TrCm/gcVAnPEDfzyqkGzzM3UN8YfGs65Ft8RUgcKhFOiL8cNUS5+3+J5i7X7R9JeqxsTyItyPShgumCWvIcoHnTxUHUilBBgVtTRI7LUlOoAHA/9pGUyAsEPhxgAjYXBXIp0riVQs3qZixAOzRvB3fR5Tdz29bSrZ7XLvS+79/pjK93mxe09gHlQ7btQebfSnoqrVbQZKyFVcAy6QLg2cM+VbaHZilbVm0Y7nqlM+Bi1FleonEwAP8UaH/HFlNN0oVdUge5oK8H+UVKRKB5UwBfXJjgUEYZ8xiYYveTp1lX2OpMZM2NE7yldW5ck/MVMk+capOEHUzq1JE/cuVR5sZC07fDz4SUzMlZc=----ATTACHMENT:----NjI4NDc2MjgxOTA1NDEyNyA5OTc2ODQ4NTc0NTUwMjAgNTE2NzQyNDM4NTQyMTQzNA==