hooks/zmq.py
changeset 8350 e1c05bf6fdeb
parent 8211 543e1579ba0d
child 8982 6bc1c1b4473a
--- a/hooks/zmq.py	Tue Apr 10 17:03:19 2012 +0200
+++ b/hooks/zmq.py	Wed Apr 04 16:51:09 2012 +0200
@@ -46,3 +46,30 @@
             self.repo.app_instances_bus.add_subscriber(address)
         self.repo.app_instances_bus.start()
 
+
+class ZMQRepositoryServerStopHook(hook.Hook):
+    __regid__ = 'zmqrepositoryserverstop'
+    events = ('server_shutdown',)
+
+    def __call__(self):
+        server = getattr(self.repo, 'zmq_repo_server', None)
+        if server:
+            self.repo.zmq_repo_server.quit()
+
+class ZMQRepositoryServerStartHook(hook.Hook):
+    __regid__ = 'zmqrepositoryserverstart'
+    events = ('server_startup',)
+
+    def __call__(self):
+        config = self.repo.config
+        if config.name == 'repository':
+            # start-repository command already starts a zmq repo
+            return
+        address = config.get('zmq-repository-address')
+        if not address:
+            return
+        from cubicweb.server import cwzmq
+        self.repo.zmq_repo_server = server = cwzmq.ZMQRepositoryServer(self.repo)
+        server.connect(address)
+        self.repo.threaded_task(server.run)
+