1 | <?php |
||
27 | class EventManager implements EventEmitter, LoggerAwareInterface |
||
28 | { |
||
29 | /** |
||
30 | * @var WorkerFactory |
||
31 | */ |
||
32 | private $workerFactory = null; |
||
33 | |||
34 | /** |
||
35 | * @var WorkerQueue|Worker[] |
||
36 | */ |
||
37 | private $workerQueue; |
||
38 | |||
39 | /** |
||
40 | * Whenever to throw exceptions caught from listeners or not |
||
41 | * |
||
42 | * @var bool |
||
43 | */ |
||
44 | private $throwExceptions = false; |
||
45 | |||
46 | /** |
||
47 | * Currently running event |
||
48 | * |
||
49 | * @var Event |
||
50 | */ |
||
51 | private $runningEvent = null; |
||
52 | |||
53 | /** |
||
54 | * @var LoggerInterface |
||
55 | */ |
||
56 | private $logger; |
||
57 | |||
58 | /** |
||
59 | * @var ListenerException[] |
||
60 | */ |
||
61 | private $exceptions = array(); |
||
62 | |||
63 | /** |
||
64 | * Create new event manager |
||
65 | */ |
||
66 | public function __construct() |
||
72 | |||
73 | /** |
||
74 | * {@inheritdoc} |
||
75 | */ |
||
76 | public function emit(Event $event) |
||
107 | |||
108 | /** |
||
109 | * @return Event |
||
110 | */ |
||
111 | public function getRunningEvent() |
||
115 | |||
116 | /** |
||
117 | * @param Worker $worker |
||
118 | * @param Event $event |
||
119 | */ |
||
120 | protected function onWorkerStart(Worker $worker, Event $event) |
||
123 | |||
124 | /** |
||
125 | * @param Worker $worker |
||
126 | * @param Event $event |
||
127 | */ |
||
128 | protected function onWorkerStop(Worker $worker, Event $event) |
||
131 | |||
132 | /** |
||
133 | * @param Worker $worker |
||
134 | * @param Event $event |
||
135 | * |
||
136 | * @throws ListenerException |
||
137 | * @return WorkerResult |
||
138 | */ |
||
139 | private function runWorker(Worker $worker, Event $event) |
||
149 | |||
150 | /** |
||
151 | * Get all exceptions that occurred during emitting an event. |
||
152 | * |
||
153 | * @return ListenerException[] |
||
154 | */ |
||
155 | public function getExceptions() |
||
159 | |||
160 | /** |
||
161 | * Tell if the manager has collected any exceptions after last emit call. |
||
162 | * |
||
163 | * @return bool |
||
164 | */ |
||
165 | public function hasExceptions() |
||
169 | |||
170 | /** |
||
171 | * @param ListenerException $exception |
||
172 | */ |
||
173 | private function addException(ListenerException $exception) |
||
177 | |||
178 | /** |
||
179 | * Clear all collected exceptions |
||
180 | */ |
||
181 | private function clearExceptions() |
||
185 | |||
186 | /** |
||
187 | * Set to true to throw exceptions coming from listeners. |
||
188 | * By default all exceptions are suppressed. |
||
189 | * |
||
190 | * @param bool $throwExceptions |
||
191 | * |
||
192 | * @return $this |
||
193 | */ |
||
194 | public function setThrowExceptions($throwExceptions = true) |
||
200 | |||
201 | /** |
||
202 | * @see Priority |
||
203 | * |
||
204 | * @param Listener $listener |
||
205 | * @param int $priority |
||
206 | * |
||
207 | * @return $this |
||
208 | */ |
||
209 | public function add(Listener $listener, $priority = null) |
||
229 | |||
230 | /** |
||
231 | * @param Worker $worker |
||
232 | * |
||
233 | * @return $this |
||
234 | */ |
||
235 | private function addWorker(Worker $worker) |
||
241 | |||
242 | /** |
||
243 | * {@inheritdoc} |
||
244 | */ |
||
245 | public function setLogger(LoggerInterface $logger) |
||
251 | } |