GossipProtocol<T>.create constructor

GossipProtocol<T>.create({
  1. required String nodeId,
  2. required String address,
  3. required int port,
  4. GossipConfig? config,
  5. bool isTestMode = false,
})

Creates a new gossip protocol instance

Implementation

GossipProtocol.create({
  required this.nodeId,
  required String address,
  required int port,
  GossipConfig? config,
  bool isTestMode = false,
}) : config = config ?? GossipConfig(),
     _membership = {},
     _messageStore = {},
     _lastGossip = {},
     _random = Random.secure(),
     _messageController = StreamController<GossipMessage>.broadcast(),
     _membershipController = StreamController<GossipNode<T>>.broadcast(),
     _gossipTimer = null,
     _antiEntropyTimer = null,
     _failureDetectionTimer = null,
     _isTestMode = isTestMode {
  // Add self to membership
  _membership[nodeId] = GossipNode<T>(
    nodeId: nodeId,
    address: address,
    port: port,
    lastSeen: DateTime.now(),
    state: GossipNodeState.alive,
  );
}