44
55use EProcess \Behaviour \UniversalSerializer ;
66use EProcess \Behaviour \Workable ;
7+ use EProcess \Message ;
8+ use EProcess \Messenger ;
9+ use EProcess \Worker ;
710use Evenement \EventEmitterTrait ;
11+ use MKraemer \ReactPCNTL \PCNTL ;
812use React \EventLoop \LoopInterface ;
9- use EProcess \Messenger ;
10- use EProcess \Message ;
1113
1214abstract class Application
1315{
@@ -20,6 +22,30 @@ abstract class Application
2022 private $ loop ;
2123 private $ messenger ;
2224 private $ data ;
25+ private $ pcntl ;
26+ private $ workers = [];
27+
28+ public function addWorker (Worker $ worker )
29+ {
30+ $ this ->workers [] = $ worker ;
31+ }
32+
33+ public function cleanWorkers ()
34+ {
35+ foreach ($ this ->workers as $ worker ) {
36+ $ worker ->emit ('shutdown ' );
37+ unlink ($ worker ->adapter ()->getUnixSocketFile ());
38+ }
39+ }
40+
41+ public function pcntl (PCNTL $ pcntl = null )
42+ {
43+ if ($ pcntl ) {
44+ $ this ->pcntl = $ pcntl ;
45+ }
46+
47+ return $ this ->pcntl ;
48+ }
2349
2450 public function loop (LoopInterface $ loop = null )
2551 {
@@ -33,7 +59,7 @@ public function loop(LoopInterface $loop = null)
3359 public function messenger (Messenger $ messenger = null )
3460 {
3561 if ($ messenger ) {
36- $ messenger ->on ('message ' , function (Message $ message ) {
62+ $ messenger ->on ('message ' , function (Message $ message ) {
3763 $ this ->emitterEmit ($ message ->getEvent (), [$ message ->getContent ()]);
3864 });
3965
@@ -52,7 +78,7 @@ public function data(array $data = null)
5278 return $ this ->data ;
5379 }
5480
55- public function emit ($ event , $ data )
81+ public function emit ($ event , $ data = '' )
5682 {
5783 $ this ->messenger ->emit ($ event , $ data );
5884 }
0 commit comments