public function dispatch(Event $event) { if ($this->_listeners[$event->name()]) { return $this->_callListener([$event->subject(), $this->_listeners[$event->name()]], $event); } return false; }
function handleEvent(Event $event) { switch ($event->name()) { case Event::READABLE: $this->state = static::STATE_READABLE; break; case Event::WRITEABLE: $this->state = static::STATE_WRITEABLE; break; case Event::TERMINATED: $this->state = static::STATE_TERMINATED; break; } switch ($this->state) { case static::STATE_READABLE: $this->handleData($event); break; case static::STATE_WRITEABLE: $this->handleWrite($event); break; case static::STATE_TERMINATED: $this->handleTerminate($event); break; } }
/** * Fire the Event to each registered Listener * * @param Event $event * @return void */ private function fire(Event $event) { foreach ($this->registered($event->name()) as $listener) { $listener->handle($event); } }
/** * Dispatches a new event to all configured listeners * * @param string|\Cake\Event\Event $event the event key name or instance of Event * @return \Cake\Event\Event */ public function dispatch($event) { if (is_string($event)) { $event = new Event($event); } $listeners = $this->listeners($event->name()); if (empty($listeners)) { return $event; } foreach ($listeners as $listener) { if ($event->isStopped()) { break; } $result = $this->_callListener($listener['callable'], $event); if ($result === false) { $event->stopPropagation(); } if ($result !== null) { $event->result = $result; } } return $event; }