/// <summary> /// /// </summary> /// <param name="serviceBus">The service bus on which commands are received</param> /// <param name="controlBus">The control bus for the synchronization messages between nodes</param> public void Start(IServiceBus serviceBus, IServiceBus controlBus) { _serviceBus = serviceBus; _controlBus = controlBus; _nodeState.ChangeTo <FollowerBehavior>(); }
public void Start() { _state.CurrentTerm = 0; // start at zero // get the last term for this node _state.ChangeTo <FollowerBehavior>(); }
public void Consume(IConsumeContext <VoteFor> context) { if (context.Message.Term > _candidateTerm) { _state.CurrentTerm = context.Message.Term; _state.ChangeTo <FollowerBehavior>(); return; } _votes[context.Message.Supporter.ControlUri] = true; var votesGranted = _votes.Count(x => x); if (votesGranted >= _state.QuorumSize) { _elected = true; } if (_elected) { // if (_state.PromoteToLeader(_candidateTerm, lastLogIndex, lastLogTerm)) // _state.ChangeTo<LeaderBehavior>(); } }