def setUpClass(cls): server_keypair, client_keypair = generate_session_keypairs() cert_store = {"*": {client_keypair.public: True}} # Prepare context cls.context = Context.new( client_keypair.private, client_keypair.public, server_keypair.public, msg_proc_klass ) cls.ctx = zmq.Context.instance() # Start a ZAP handler cls.auth = ThreadAuthenticator(cls.ctx) cls.auth.start() cls.auth.configure_curve(cert_store) # Mock exchange's server sockets cls.server_socket, cls.publisher_socket = generate_server_sockets(server_keypair, cls.ctx) # Fire up the context cls.context.start() # Establish comm with context's command socket cls.cmd_socket = dealer_socket(cls.ctx) cls.cmd_socket.connect(cls.context.cmd_endpoint)
def stop(self): """\ Stop LedgerX context I/O loop. """ if not self.running.is_set(): raise LXError("context already stopped") self.running.clear() cmd_sock = dealer_socket(self.context) cmd_sock.connect(self.cmd_endpoint) cmd_sock.send_pyobj("EXIT")
def submit(self, msg): """\ Submit a protocol message to the exchange. :param msg: The message to be sent to the exchange. :returns: A reference of :class:`ledgerx.store.IDStoreItem`. """ payload = msg.dumps() cmd_sock = dealer_socket(self.context) cmd_sock.connect(self.cmd_endpoint) cmd_sock.send_pyobj(["SEND", payload]) cmd_sock.close() settings.ID_STORE[msg.mid] = IDStoreItem(msg) return settings.ID_STORE[msg.mid]