private void OnResult(MajorityResults majorityResult) { if (majorityResult == MajorityResults.Unreachable) { var votesCount = resultMessageItem.ResultEnvelope.Signatures.Count; if (resultMessageItem.ResultEnvelope.IsSignedBy(Global.Settings.KeyPair)) { votesCount--; } var originalEnvelope = resultMessageItem.ResultMessage.OriginalMessage; SequentialRequestMessage requestMessage = null; if (originalEnvelope.Message is SequentialRequestMessage) { requestMessage = (SequentialRequestMessage)originalEnvelope.Message; } else if (originalEnvelope.Message is RequestQuantum) { requestMessage = ((RequestQuantum)originalEnvelope.Message).RequestEnvelope.Message as SequentialRequestMessage; } var exc = new Exception($"Majority for quantum {resultMessageItem.Apex} ({requestMessage.MessageType}) is unreachable. Results received count is {processedAuditors.Count}, valid results count is {votesCount}. The constellation collapsed."); logger.Error(exc); Global.AppState.State = ApplicationState.Failed; throw exc; } SendResult(); }
private void OnResult(MajorityResults majorityResult) { if (majorityResult == MajorityResults.Unreachable) { var votesCount = resultMessageItem.ResultEnvelope.Signatures.Count - 1;//one signature belongs to Alpha var originalEnvelope = resultMessageItem.ResultMessage.OriginalMessage; SequentialRequestMessage requestMessage = null; if (originalEnvelope.Message is SequentialRequestMessage) { requestMessage = (SequentialRequestMessage)originalEnvelope.Message; } else if (originalEnvelope.Message is RequestQuantum) { requestMessage = ((RequestQuantum)originalEnvelope.Message).RequestEnvelope.Message as SequentialRequestMessage; } var exc = new Exception("Majority for quantum" + $" {resultMessageItem.Apex} ({requestMessage?.MessageType ?? originalEnvelope.Message.MessageType})" + $" is unreachable. Results received count is {processedAuditors.Count}," + $" valid results count is {votesCount}. The constellation collapsed."); logger.Error(exc); resultManager.Context.AppState.State = ApplicationState.Failed; throw exc; } SendResult(); }
private RawPubKey GetMessageAccount() { var originalEnvelope = ResultMessage.OriginalMessage; SequentialRequestMessage requestMessage = null; if (originalEnvelope.Message is SequentialRequestMessage) { requestMessage = (SequentialRequestMessage)originalEnvelope.Message; } else if (originalEnvelope.Message is RequestQuantum) { requestMessage = ((RequestQuantum)originalEnvelope.Message).RequestEnvelope.Message as SequentialRequestMessage; } if (requestMessage == null) { return(null); } return(Global.AccountStorage.GetAccount(requestMessage.Account).Account.Pubkey); }