shutdown method

  1. @override
Future<void> shutdown()
override

Shutdown the peer manager and all associated peers

Implementation

@override
Future<void> shutdown() async {
  if (_isShutdown) {
    return;
  }

  _isShutdown = true;
  logger.info('Shutting down peer manager...');

  // Stop health monitoring
  _healthCheckTimer?.cancel();
  _healthCheckTimer = null;

  // Shutdown all peers
  final shutdownFutures = <Future<void>>[];
  for (final peer in _peers.values) {
    shutdownFutures.add(peer.shutdown());
  }

  await Future.wait(shutdownFutures);

  // Clear state
  _peers.clear();
  _connectingPeers.clear();
  _lastAnnouncement.clear();

  // Close streams
  await _peerAddedController.close();
  await _peerRemovedController.close();
  await _messageController.close();

  // Shutdown chain tip tracker
  await _chainTipTracker.shutdown();

  logger.info('Peer manager shutdown complete');
}