示例#1
0
文件: broker.py 项目: thefrip/domogik
    def __init__(self, context, main_ep, opt_ep=None):
        """Init MDPBroker instance.
        """
        l = logger.Logger('mq_broker')
        self.log = l.get_logger()
        self.log.info("MDP broker startup...")

        socket = ZmqSocket(context, zmq.ROUTER)
        socket.bind(main_ep)
        self.main_stream = ZMQStream(socket)
        self.main_stream.on_recv(self.on_message)
        if opt_ep:
            socket = ZmqSocket(context, zmq.ROUTER)
            socket.bind(opt_ep)
            self.client_stream = ZMQStream(socket)
            self.client_stream.on_recv(self.on_message)
        else:
            self.client_stream = self.main_stream
        self.log.debug("Socket created...")
        self._workers = {}
        # services contain the worker queue and the request queue
        self._services = {}
        self._worker_cmds = {
            b'\x01': self.on_ready,
            b'\x03': self.on_reply,
            b'\x04': self.on_heartbeat,
            b'\x05': self.on_disconnect,
        }
        self.log.debug("Launch the timer...")
        self.hb_check_timer = PeriodicCallback(self.on_timer, HB_INTERVAL)
        self.hb_check_timer.start()
        self.log.info("MDP broker started")
        return
示例#2
0
文件: worker.py 项目: thefrip/domogik
 def _create_stream(self):
     """Helper to create the socket and the stream.
     """
     socket = ZmqSocket(self.context, zmq.DEALER)
     ioloop = IOLoop.instance()
     self.stream = ZMQStream(socket, ioloop)
     self.stream.on_recv(self._on_mpd_message)
     self.stream.socket.setsockopt(zmq.LINGER, 0)
     self.stream.connect(self.endpoint)
     self.ticker = PeriodicCallback(self._tick, self.HB_INTERVAL)
     self._send_ready()
     self.ticker.start()
     return
示例#3
0
文件: client.py 项目: alphatb/domogik
 def __init__(self, context):
     """Initialize the MDPClient.
     """
     if ("domogik.common.configloader" in sys.modules):
         cfg = Loader('mq').load()
         config = dict(cfg[1])
         endpoint = "tcp://{0}:{1}".format(config['ip'], config['req_rep_port'])
     else:
         ip = Parameter.objects.get(key='mq-ip')
         port = Parameter.objects.get(key='mq-req_rep_port')
         endpoint = "tcp://{0}:{1}".format(ip.value, port.value)
     self.socket = ZmqSocket(context, zmq.REQ)
     self.socket.connect(endpoint)         
     return
示例#4
0
文件: client.py 项目: alphatb/domogik
 def __init__(self, context, service):
     """Initialize the MDPClient.
     """
     if ("domogik.common.configloader" in sys.modules):
         cfg = Loader('mq').load()
         confi = dict(cfg[1])
         self.endpoint = "tcp://{0}:{1}".format(config['ip'], config['req_rep_port'])
     else:
         ip = Parameter.objects.get(key='mq-ip')
         port = Parameter.objects.get(key='mq-req_rep_port')
         self.endpoint = "tcp://{0}:{1}".format(ip.value, port.value)
     socket = ZmqSocket(context, zmq.REQ)
     ioloop = IOLoop.instance()
     self.service = service
     self.stream = ZMQStream(socket, ioloop)
     self.stream.on_recv(self._on_message)
     self.can_send = True
     self._proto_prefix = [ PROTO_VERSION, service]
     self._tmo = None
     self.timed_out = False
     socket.connect(self.endpoint)
     return