Esempio n. 1
0
 private void updateBallotNumberIfNeeded(SolicitateBallotRequest message, AcceptorState state)
 {
     if (message.BallotNumber > state.BallotNumber)
     {
         state.BallotNumber = message.BallotNumber;
     }
 }
Esempio n. 2
0
        private void rejectVote(VoteRequest request, AcceptorState state)
        {
            VoteStatus   voteStatus = VoteStatus.Rejected;
            VoteResponse response   = generateVoteResponse(state, request, voteStatus);

            sendVoteResponse(request.MessageSender, response);
        }
Esempio n. 3
0
 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}");
     }
 }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
            }
        }
Esempio n. 8
0
        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);
        }