def main(): config = create_config() # chain manager chain_manager = ChainManager(config=config) # peer manager peer_manager = PeerManager(config=config) # start tcp server try: tcp_server = TcpServer(peer_manager, config.get('network', 'listen_host'), config.getint('network', 'listen_port')) except IOError as e: logger.error("Could not start TCP server: \"{0}\"".format(str(e))) sys.exit(1) peer_manager.local_address = (tcp_server.ip, tcp_server.port) tcp_server.start() peer_manager.start() chain_manager.start() # handle termination signals def signal_handler(signum=None, frame=None): logger.info('Signal handler called with signal {0}'.format(signum)) peer_manager.stop() chain_manager.stop() # tcp_server checks for peer_manager.stopped() for sig in [signal.SIGTERM, signal.SIGHUP, signal.SIGQUIT, signal.SIGINT]: signal.signal(sig, signal_handler) # connect peer if config.get('network', 'remote_host'): peer_manager.connect_peer(config.get('network', 'remote_host'), config.getint('network', 'remote_port')) # loop while not peer_manager.stopped(): time.sleep(0.1) if len(peer_manager.get_connected_peer_addresses()) > 2: chain_manager.bootstrap_blockchain() logger.info('exiting') # tcp_server.join() # does not work! peer_manager.join()
def main(): config = create_config() # chain manager chain_manager = ChainManager(config=config) # peer manager peer_manager = PeerManager(config=config) # start tcp server try: tcp_server = TcpServer(peer_manager, config.get('network', 'listen_host'), config.getint('network', 'listen_port')) except IOError as e: logger.error("Could not start TCP server: \"{0}\"".format(str(e))) sys.exit(1) peer_manager.local_address = (tcp_server.ip, tcp_server.port) tcp_server.start() peer_manager.start() chain_manager.start() # handle termination signals def signal_handler(signum=None, frame=None): logger.info('Signal handler called with signal {0}'.format(signum)) peer_manager.stop() chain_manager.stop() # tcp_server checks for peer_manager.stopped() for sig in [signal.SIGTERM, signal.SIGHUP, signal.SIGQUIT, signal.SIGINT]: signal.signal(sig, signal_handler) # connect peer if config.get('network', 'remote_host'): peer_manager.connect_peer( config.get('network', 'remote_host'), config.getint('network', 'remote_port')) # loop while not peer_manager.stopped(): time.sleep(0.1) if len(peer_manager.get_connected_peer_addresses()) > 2: chain_manager.bootstrap_blockchain() logger.info('exiting') # tcp_server.join() # does not work! peer_manager.join()