/** * @see EventInterface::add() */ public function add($fd, $flag, $func, $args = array()) { switch ($flag) { case self::EV_SIGNAL: $fd_key = (int) $fd; $event = \Event::signal($this->_eventBase, $fd, $func); if (!$event || !$event->add()) { return false; } $this->_eventSignal[$fd_key] = $event; return true; case self::EV_TIMER: case self::EV_TIMER_ONCE: $param = array($func, (array) $args, $flag, $fd, self::$_timerId); $event = new \Event($this->_eventBase, -1, \Event::TIMEOUT | \Event::PERSIST, array($this, "timerCallback"), $param); if (!$event || !$event->addTimer($fd)) { return false; } $this->_eventTimer[self::$_timerId] = $event; return self::$_timerId++; default: $fd_key = (int) $fd; $real_flag = $flag === self::EV_READ ? \Event::READ | \Event::PERSIST : \Event::WRITE | \Event::PERSIST; $event = new \Event($this->_eventBase, $fd, $real_flag, $func, $fd); if (!$event || !$event->add()) { return false; } $this->_allEvents[$fd_key][$flag] = $event; return true; } }