Browse Source

Session manager owns peer manager

patch-2
Neil Booth 7 years ago
parent
commit
5ee5a54f5a
  1. 12
      electrumx/server/controller.py
  2. 9
      electrumx/server/session.py

12
electrumx/server/controller.py

@ -102,22 +102,18 @@ class Controller(ServerBase):
self.bp.lookup_utxos) self.bp.lookup_utxos)
self.chain_state = ChainState(env, self.tasks, daemon, self.bp, self.chain_state = ChainState(env, self.tasks, daemon, self.bp,
notifications) notifications)
self.peer_mgr = PeerManager(env, self.tasks, self.chain_state)
self.session_mgr = SessionManager(env, self.tasks, self.chain_state, self.session_mgr = SessionManager(env, self.tasks, self.chain_state,
self.mempool, self.peer_mgr, self.mempool, notifications,
notifications, self.shutdown_event) self.shutdown_event)
async def start_servers(self): async def start_servers(self):
'''Start the RPC server and wait for the mempool to synchronize. Then '''Start the RPC server and wait for the mempool to synchronize. Then
start the peer manager and serving external clients. start serving external clients.
''' '''
await self.session_mgr.start_rpc_server() await self.session_mgr.start_rpc_server()
await self.bp.catch_up_to_daemon() await self.bp.catch_up_to_daemon()
await self.mempool.start_and_wait_for_sync() await self.mempool.start_and_wait_for_sync()
await self.session_mgr.start_serving() await self.session_mgr.start_serving()
# Peer discovery should start after we start serving because
# we connect to ourself
self.peer_mgr.start_peer_discovery()
async def shutdown(self): async def shutdown(self):
'''Perform the shutdown sequence.''' '''Perform the shutdown sequence.'''
@ -125,5 +121,5 @@ class Controller(ServerBase):
await self.session_mgr.shutdown() await self.session_mgr.shutdown()
# Flush chain state to disk # Flush chain state to disk
await self.chain_state.shutdown() await self.chain_state.shutdown()
# Cancel all tasks; this shuts down the peer manager and prefetcher # Cancel all tasks; this shuts down the prefetcher
await self.tasks.cancel_all(wait=True) await self.tasks.cancel_all(wait=True)

9
electrumx/server/session.py

@ -97,14 +97,14 @@ class SessionManager(object):
CATCHING_UP, LISTENING, PAUSED, SHUTTING_DOWN = range(4) CATCHING_UP, LISTENING, PAUSED, SHUTTING_DOWN = range(4)
def __init__(self, env, tasks, chain_state, mempool, peer_mgr, def __init__(self, env, tasks, chain_state, mempool, notifications,
notifications, shutdown_event): shutdown_event):
env.max_send = max(350000, env.max_send) env.max_send = max(350000, env.max_send)
self.env = env self.env = env
self.tasks = tasks self.tasks = tasks
self.chain_state = chain_state self.chain_state = chain_state
self.mempool = mempool self.mempool = mempool
self.peer_mgr = peer_mgr self.peer_mgr = PeerManager(env, tasks, chain_state)
self.shutdown_event = shutdown_event self.shutdown_event = shutdown_event
self.logger = util.class_logger(__name__, self.__class__.__name__) self.logger = util.class_logger(__name__, self.__class__.__name__)
self.servers = {} self.servers = {}
@ -419,6 +419,9 @@ class SessionManager(object):
self.logger.info('drop clients matching: {}' self.logger.info('drop clients matching: {}'
.format(self.env.drop_client.pattern)) .format(self.env.drop_client.pattern))
await self._start_external_servers() await self._start_external_servers()
# Peer discovery should start after the external servers
# because we connect to ourself
self.peer_mgr.start_peer_discovery()
self.tasks.create_task(self._housekeeping()) self.tasks.create_task(self._housekeeping())
async def shutdown(self): async def shutdown(self):

Loading…
Cancel
Save