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:----G32uRobyLdkqF54yorCmyGtbRu4ZsKur30cQh8zv/UIpx3HnBoSNmsYG4zwQKtvzc4ymPzZrbf1LPWTZz49CX5cdQH+8B6FN27wNaekRDaL7Xrzzgqfpom7GrwIqv9mn49E/aU6TW2mlmZThwUscRSQD7QQjKZzc/maD8AM7Go7TGcaCIS77YW4LEcy+vpO6ki3/am/g2niYFYDmWKnwRet/2VXJATbsDmB/1euKQA7HWtQVo6f7lwJs0Qi57cEBfuOhdfUR9oQQpzfIrnEV8lXgpKFm5oIqUqBbeHho0t2XFRpRLRXajYC0R1HuI9KpPDEBSJRgWeOjBWw88WGiYO2/AXxfNkG9iWIU8PWQoMIY5rxVLoF8g1s674Fl+w/VafeKW/GNsPy2VCYfgiqGUO8XuO9d8H3HOeM7Rm2/IaEwFZYY7uFdzbEIujZ4UYM3pNzNgvkQQaxGMg3KVefI/OZAjayFwmz2ZvduMYc5sTVurdu/2nYP5qPmgiX0zzRuxxEDv1epMBTbjhOwoOB2Y6FWNK09p+PQeGHGQTWC9qJcG8kZKAtkO3SZ5cQ7/6RFwNugQyr6YOZ/rzjyBsLuZNBf98dEPc3+TvoWRx7GOgNgpHUclslgmdimitBEJ1Tea9T9kSs29J5CS1O4Gbo7kLa5b1vJ++HA3kIYbPzOaA4=----ATTACHMENT:----Mjc4NzU3NTM1MDU0MzE5MiA2ODExMjA3OTYwNjI0MjE4IDgzNDE0ODU1MjcyNzE1MDE=