def __init__(self, name, event_protocol="tcp://127.0.0.1:5555", register_protocol="tcp://127.0.0.1:5557"): EventEngine.__init__(self) self._name = name self._context = zmq.Context() try: self._broadcast_event_socket = self._context.socket(zmq.PUB) self._broadcast_event_socket.bind(event_protocol) self._server_recv_event_socket = self._context.socket(zmq.PULL) self._server_recv_event_socket.bind(register_protocol) self._is_server = True log.info('Run ZMQEventEngine Server: %s' % self._name) except zmq.error.ZMQError: log.info('Run ZMQEventEngine client: %s' % self._name) self._is_server = False self._emit_event_socket = self._context.socket(zmq.PUSH) self._emit_event_socket.connect(register_protocol) self._client_recv_event_socket = self._context.socket(zmq.SUB) self._client_recv_event_socket.connect(event_protocol) self._thread = Thread(target=self._run) self._thread.daemon = True self._queue_engine = QueueEventEngine(self._name) time.sleep(1)
def __init__(self, name, event_protocol="tcp://127.0.0.1:5555", register_protocol="tcp://127.0.0.1:5557"): EventEngine.__init__(self) self._name = name self._context = zmq.Context() try: self._broadcast_event_socket = self._context.socket(zmq.PUB) self._broadcast_event_socket.bind(event_protocol) self._server_recv_event_socket = self._context.socket(zmq.PULL) self._server_recv_event_socket.bind(register_protocol) self._is_server = True log.info('Run ZMQEventEngine Server: %s' % self._name) except zmq.error.ZMQError: log.info('Run ZMQEventEngine client: %s' % self._name) self._is_server = False self._emit_event_socket = self._context.socket(zmq.PUSH) self._emit_event_socket.connect(register_protocol) self._client_recv_event_socket = self._context.socket(zmq.SUB) self._client_recv_event_socket.connect(event_protocol) self._thrd = Thread(target=self._run) self._thrd.daemon = True self._queue_engine = QueueEventEngine(self._name) time.sleep(1)
def __init__(self): log.info("Init Shell..") self._engine = ZMQEventEngine('Shell') self._engine.start() self.gate = EventRPCClient('Shell', self._engine, WindowGate.SERVER_FOR_SHELL) self._backend = EventRPCClient('test_shell', self._engine, Backend.SERVER_FOR_SHELL)
def __init__(self): log.info("Init Backend..") self._dm = DataManager() self._engine = ZMQEventEngine('Backend') self._engine.start() self._shell_srv = EventRPCServer(self._engine, self.SERVER_FOR_SHELL) self._ui_srv = EventRPCServer(self._engine, self.SERVER_FOR_UI) self.register_functions(self._shell_srv) self.register_functions(self._ui_srv)
def __init__(self): log.info("Init Backend..") self._engine = ZMQEventEngine('Backend') self._engine.start() self._shell_srv = EventRPCServer(self._engine, self.SERVER_FOR_SHELL) self._ui_srv = EventRPCServer(self._engine, self.SERVER_FOR_UI) self.register_functions(self._shell_srv) self.register_functions(self._ui_srv)
def __init__(self, event_engine, service, event_client=None, event_server=None): super(EventRPCServer, self).__init__() self._routes = {} self._routes_lock = Lock() # server监听的client事件 self.EVENT_FROM_CLIENT = event_client if event_client else "EVENT_FROM_%s_CLIENT" % service.upper() # client监听的server事件 self.EVENT_FROM_SERVER = event_server if event_server else "EVENT_FROM_%s_SERVER" % service.upper() self._event_engine = event_engine self._event_engine.register(self.EVENT_FROM_CLIENT, self._process_request) log.info("[Create RPCServer %s]" % self.EVENT_FROM_CLIENT) self._name = service.upper()
def __init__(self, event_engine, service, event_client=None, event_server=None): super(EventRPCServer, self).__init__() self._routes = {} self._routes_lock = Lock() # server监听的client事件 self.EVENT_FROM_CLIENT = event_client if event_client else "EVENT_FROM_%s_CLIENT" % service.upper( ) # client监听的server事件 self.EVENT_FROM_SERVER = event_server if event_server else "EVENT_FROM_%s_SERVER" % service.upper( ) self._event_engine = event_engine self._event_engine.register(self.EVENT_FROM_CLIENT, self._process_request) log.info("[Create RPCServer %s]" % self.EVENT_FROM_CLIENT) self._name = service.upper()
def _process_apiback(self, event): assert(event.route == self.EVENT_FROM_SERVER) self._timeout = 0 rid = event.args['rid'] try: with self._handlers_lock: handler = self._handlers[rid] except KeyError: log.info('[RPCClient._process_apiback] 放弃超时任务的返回结果') else: try: if handler: # 异步 handler(event.args['ret']) else: # 同步 self._sync_ret = event.args['ret'] self._notify_server_data() except Exception as e: log.error(e) log.debug("[RPCClient._process_apiback] 删除已经完成的任务 rid; %s" % rid) with self._handlers_lock: del self._handlers[rid]
def _process_apiback(self, event): assert (event.route == self.EVENT_FROM_SERVER) self._timeout = 0 rid = event.args['rid'] try: with self._handlers_lock: handler = self._handlers[rid] except KeyError: log.info('[RPCClient._process_apiback] 放弃超时任务的返回结果') else: try: if handler: # 异步 handler(event.args['ret']) else: # 同步 self._sync_ret = event.args['ret'] self._notify_server_data() except Exception as e: log.error(e) log.debug("[RPCClient._process_apiback] 删除已经完成的任务 rid; %s" % rid) with self._handlers_lock: del self._handlers[rid]
def stop(self): log.info('Backend stopped.') self._engine.stop()
def start(self): log.info('start timer') self._timer_active = True self._timer.start()