hooks/zmq.py
changeset 10236 ef3059a692cb
parent 9890 57e2cffa6329
child 10907 9ae707db5265
equal deleted inserted replaced
10235:684215aca046 10236:ef3059a692cb
     1 # -*- coding: utf-8 -*-
     1 # -*- coding: utf-8 -*-
     2 # copyright 2012 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
     2 # copyright 2014 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
     3 # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
     3 # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
     4 #
     4 #
     5 # This file is part of CubicWeb.
     5 # This file is part of CubicWeb.
     6 #
     6 #
     7 # CubicWeb is free software: you can redistribute it and/or modify it under the
     7 # CubicWeb is free software: you can redistribute it and/or modify it under the
    48         for address in address_sub:
    48         for address in address_sub:
    49             self.repo.app_instances_bus.add_subscriber(address)
    49             self.repo.app_instances_bus.add_subscriber(address)
    50         self.repo.app_instances_bus.start()
    50         self.repo.app_instances_bus.start()
    51 
    51 
    52 
    52 
    53 class ZMQRepositoryServerStopHook(hook.Hook):
       
    54     __regid__ = 'zmqrepositoryserverstop'
       
    55     events = ('server_shutdown',)
       
    56 
       
    57     def __call__(self):
       
    58         server = getattr(self.repo, 'zmq_repo_server', None)
       
    59         if server:
       
    60             self.repo.zmq_repo_server.quit()
       
    61 
       
    62 class ZMQRepositoryServerStartHook(hook.Hook):
       
    63     __regid__ = 'zmqrepositoryserverstart'
       
    64     events = ('server_startup',)
       
    65 
       
    66     def __call__(self):
       
    67         config = self.repo.config
       
    68         if config.name == 'repository':
       
    69             # start-repository command already starts a zmq repo
       
    70             return
       
    71         address = config.get('zmq-repository-address')
       
    72         if not address:
       
    73             return
       
    74         self.repo.warning('remote access to the repository via zmq/pickle is deprecated')
       
    75         from cubicweb.server import cwzmq
       
    76         self.repo.zmq_repo_server = server = cwzmq.ZMQRepositoryServer(self.repo)
       
    77         server.connect(address)
       
    78         self.repo.threaded_task(server.run)
       
    79