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 | 12 | private $exceptions = array(); |
|
62 | |||
63 | 12 | /** |
|
64 | 12 | * Create new event manager |
|
65 | 12 | */ |
|
66 | 12 | public function __construct() |
|
72 | |||
73 | 10 | /** |
|
74 | 10 | * {@inheritdoc} |
|
75 | */ |
||
76 | 10 | public function emit(Event $event) |
|
107 | |||
108 | /** |
||
109 | * @return Event |
||
110 | */ |
||
111 | 9 | public function getRunningEvent() |
|
115 | |||
116 | /** |
||
117 | * @param Worker $worker |
||
118 | * @param Event $event |
||
119 | */ |
||
120 | protected function onWorkerStart(Worker $worker, Event $event) |
||
123 | |||
124 | 9 | /** |
|
125 | * @param Worker $worker |
||
126 | 9 | * @param Event $event |
|
127 | 9 | */ |
|
128 | 9 | protected function onWorkerStop(Worker $worker, Event $event) |
|
131 | 2 | ||
132 | /** |
||
133 | 2 | * @param Worker $worker |
|
134 | 1 | * @param Event $event |
|
135 | 1 | * |
|
136 | * @throws ListenerException |
||
137 | 1 | * @return WorkerResult |
|
138 | */ |
||
139 | 1 | private function runWorker(Worker $worker, Event $event) |
|
149 | |||
150 | /** |
||
151 | * Get all exceptions that occurred during emitting an event. |
||
152 | 5 | * |
|
153 | * @return ListenerException[] |
||
154 | 5 | */ |
|
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 | 10 | ||
170 | 10 | /** |
|
171 | * @param ListenerException $exception |
||
172 | 10 | */ |
|
173 | 1 | private function addException(ListenerException $exception) |
|
177 | 10 | ||
178 | 10 | /** |
|
179 | 10 | * Clear all collected exceptions |
|
180 | */ |
||
181 | 10 | private function clearExceptions() |
|
185 | 10 | ||
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 | 10 | */ |
|
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 | } |