def generate_server_sockets(keypair, context): """\ Generate a server and a publisher secure sockets. """ server_sock = secure_socket(router_socket, keypair.private, keypair.public, ctx=context) server_sock.bind(settings.EXCHANGE_ENDPOINT) publisher_sock = secure_socket(pub_socket, keypair.private, keypair.public, ctx=context) publisher_sock.bind(settings.EXCHANGE_PUBLISHER_ENDPOINT) return (server_sock, publisher_sock)
def _run_device(self): try: self.jobs = [] self.thpool = futures.ThreadPoolExecutor(max_workers=1) self.client_sock = secure_socket( dealer_socket, self.private_key, self.public_key, self.server_key, self.context ) self.client_sock.monitor(self.state_endpoint) self.client_sock.connect(settings.EXCHANGE_ENDPOINT) self.client_state_sock = pair_socket(self.context) self.client_state_sock.connect(self.state_endpoint) self.publisher_sock = secure_socket( sub_socket, self.private_key, self.public_key, self.server_key, self.context ) self.publisher_sock.connect(settings.EXCHANGE_PUBLISHER_ENDPOINT) self.publisher_sock.subscribe = b"" self.cmd_sock = router_socket(self.context) self.cmd_sock.bind(self.cmd_endpoint) self.poller = zmq.Poller() self.poller.register(self.client_sock, zmq.POLLIN) self.poller.register(self.client_state_sock, zmq.POLLIN) self.poller.register(self.publisher_sock, zmq.POLLIN) self.poller.register(self.cmd_sock, zmq.POLLIN) # Context's I/O loop self.__io_loop() except: logger.exception("error occurred in context I/O loop") finally: self.client_sock.close() self.client_state_sock.close() self.publisher_sock.close() self.cmd_sock.close() self.thpool.shutdown()