equal
deleted
inserted
replaced
10 # FOR A PARTICULAR PURPOSE. |
10 # FOR A PARTICULAR PURPOSE. |
11 # |
11 # |
12 |
12 |
13 __docformat__ = 'restructuredtext' |
13 __docformat__ = 'restructuredtext' |
14 |
14 |
15 |
|
16 # import standard library |
|
17 import multiprocessing |
15 import multiprocessing |
18 import signal |
16 import signal |
19 import sys |
17 import sys |
|
18 |
20 import zmq |
19 import zmq |
21 |
|
22 # import interfaces |
|
23 from pyams_zmq.interfaces import IZMQProcess |
|
24 |
|
25 # import packages |
|
26 from zmq.auth.thread import ThreadAuthenticator |
20 from zmq.auth.thread import ThreadAuthenticator |
27 from zmq.eventloop import ioloop, zmqstream |
21 from zmq.eventloop import ioloop, zmqstream |
28 from zope.interface import implementer |
22 from zope.interface import implementer |
|
23 |
|
24 from pyams_utils.registry import get_global_registry |
|
25 from pyams_zmq.interfaces import IZMQProcess, ZMQProcessStartedEvent |
29 |
26 |
30 |
27 |
31 @implementer(IZMQProcess) |
28 @implementer(IZMQProcess) |
32 class ZMQProcess(multiprocessing.Process): |
29 class ZMQProcess(multiprocessing.Process): |
33 """ |
30 """ |
73 |
70 |
74 def run(self): |
71 def run(self): |
75 """Sets up everything and starts the event loop.""" |
72 """Sets up everything and starts the event loop.""" |
76 signal.signal(signal.SIGTERM, self.exit) |
73 signal.signal(signal.SIGTERM, self.exit) |
77 self.setup() |
74 self.setup() |
|
75 registry = get_global_registry() |
|
76 registry.notify(ZMQProcessStartedEvent(self)) |
78 self.loop.start() |
77 self.loop.start() |
79 |
78 |
80 def stop(self): |
79 def stop(self): |
81 """Stops the event loop.""" |
80 """Stops the event loop.""" |
82 if self.loop is not None: |
81 if self.loop is not None: |