private void updateBallotNumberIfNeeded(SolicitateBallotRequest message, AcceptorState state) { if (message.BallotNumber > state.BallotNumber) { state.BallotNumber = message.BallotNumber; } }
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}"); } }
private void solicitateBallot() { SolicitateBallotRequest request = new SolicitateBallotRequest(); request.BallotNumber = this.currentState.BallotNumber; request.MessageSender = this.currentState.MessageSender; this.strategyContainer.ExecuteStrategy(request, this.currentState); }
private void sendRequestToAcceptors(LeaderState state, SolicitateBallotRequest objMessage) { state.BallotRequestPendingDecisionByAcceptors.Clear(); foreach (MessageSender acceptor in state.Acceptors) { state.BallotRequestPendingDecisionByAcceptors.Add(acceptor); broker.SendMessage(acceptor.UniqueId, objMessage); } }
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); }
public void Execute(MessageStrategyExecuteArg <IMessage> obj) { if (!(obj.Message is SolicitateBallotRequest)) { throw new MessageStrategyException("This strategy shouldn't be invoked with this message type"); } SolicitateBallotRequest request = obj.Message as SolicitateBallotRequest; sendRequestToAcceptors(obj.RoleState as LeaderState, request); }