Example #1
0
        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)
Example #2
0
    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")
Example #3
0
    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]