GossipProtocol<T>.create constructor
GossipProtocol<T>.create ({
- required String nodeId,
- required String address,
- required int port,
- GossipConfig? config,
- 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,
);
}