def main():
global in_pipe, out_pipe, public_key, private_key
try:
docopt_config = "Usage: my_program.py [--port=PORT] [--connect=PORT]"
arguments = docopt.docopt(docopt_config)
port = arguments["--port"]
if port == None:
port = 5555
connect_dest = arguments["--connect"]
except docopt.DocoptExit as e:
print(e.message)
return
context = zmq.Context()
in_pipe = zpipe(context)
out_pipe = zpipe(context)
loop = asyncio.get_event_loop()
net_config = {"port": port}
# Generate Node Keys & Id.
private_key = enc.generate_RSA(4096)
public_key = private_key.publickey();
# debug("Private Key=[%s], Public Key=[%s]." % (str(private_key.exportKey("PEM")), str(public_key.exportKey("PEM"))))
node_id = enc.generate_ID(public_key.exportKey("DER"))
debug("node_id=[%s]." % node_id.hexdigest())
# Start Net Engine.
zmq_future = loop.run_in_executor(None, engageNet, loop, context, out_pipe[0], in_pipe[1], net_config)
# thread = threading.Thread(target=engageNet, args=(loop, context, out_pipe[0], in_pipe[1], net_config))
# thread.daemon = True
# thread.start()
# Connect for testing.
if connect_dest != None:
out_pipe[1].send_multipart([b"conn", "tcp://{}".format(connect_dest).encode()])
# out_pipe[0].send_multipart([b"conn", "tcp://localhost:{}".format(port).encode()])
try:
loop.run_until_complete(zmq_future)
except BaseException as e:
handleException("loop.run_until_complete()", e)
out_pipe[1].send_multipart([b"shutdown"])
loop.stop()
loop.close()
zmq_future.cancel()
sys.exit(1)
评论列表
文章目录