private void updateBallotNumberIfNeeded(SolicitateBallotRequest message, AcceptorState state) { if (message.BallotNumber > state.BallotNumber) { state.BallotNumber = message.BallotNumber; } }
private void rejectVote(VoteRequest request, AcceptorState state) { VoteStatus voteStatus = VoteStatus.Rejected; VoteResponse response = generateVoteResponse(state, request, voteStatus); sendVoteResponse(request.MessageSender, response); }
private void updateBallotNumberIfNeeded(SolicitateBallotRequest message, AcceptorState state) { if (message.BallotNumber > state.BallotNumber) { state.BallotNumber = message.BallotNumber; logger.Info($"{state.MessageSender.UniqueId} elect leader {message.MessageSender.UniqueId}"); } }
public void Execute(MessageStrategyExecuteArg <IMessage> obj) { checkInvalidParameter(obj); SolicitateBallotRequest message = obj.Message as SolicitateBallotRequest; AcceptorState state = obj.RoleState as AcceptorState; updateBallotNumberIfNeeded(message, state); sendSolicitateBallotResponse(message.MessageSender, state); }
private void sendSolicitateBallotResponse(MessageSender sendTo, AcceptorState state) { SolicitateBallotResponse response = new SolicitateBallotResponse { BallotNumber = state.BallotNumber, MessageSender = state.MessageSender, Decision = state.LastAcceptedVote }; this.broker.SendMessage(sendTo.UniqueId, response); }
private VoteResponse generateVoteResponse(AcceptorState state, VoteRequest request, VoteStatus voteStatus) { VoteResponse response = new VoteResponse { BallotNumber = state.BallotNumber, MessageSender = state.MessageSender, SlotNumber = request.SlotNumber, VoteStatus = voteStatus }; return(response); }
public void Execute(MessageStrategyExecuteArg <IMessage> obj) { checkInvalidParameter(obj); VoteRequest request = (obj.Message as VoteRequest); AcceptorState state = obj.RoleState as AcceptorState; if (ballotIsValid(request.BallotNumber, state.BallotNumber)) { acceptVote(request, state); } else { rejectVote(request, state); } }
private void acceptVote(VoteRequest request, AcceptorState state) { VoteResponse vote = new VoteResponse() { BallotNumber = request.BallotNumber, SlotNumber = request.SlotNumber, Command = request.Command }; state.LastAcceptedVote = vote; VoteStatus voteStatus = VoteStatus.Accepted; VoteResponse response = generateVoteResponse(state, request, voteStatus); sendVoteResponse(request.MessageSender, response); }