private void OnAccepted(Accepted accepted) { ProposalState state; if (proposalsState.TryGetValue(accepted.ProposalNumber, out state) == false) return; state.NumberOfAccepts += 1; if (state.NumberOfAccepts <= allAcceptors.Length / 2) return; ProposalState _; proposalsState.TryRemove(state.ProposalNumber, out _); }
private void OnAccepted(Accepted accepted) { LearnerState state = learnerState.GetOrAdd(accepted.ProposalNumber, new LearnerState { BallotNumber = accepted.BallotNumber, NumberOfAccepts = 1, ProposalNumber = accepted.ProposalNumber }); if (state.BallotNumber < accepted.BallotNumber) { return; } if (state.Accepted) // duplicate return; state.NumberOfAccepts += 1; if (state.NumberOfAccepts < acceptors.Length / 2) return; OnAcceptedValue(accepted.Value); }