public static void ApplyPendingConsent(P2PPendingConsent pendingConsent) { if (Recorder.session != null) { Recorder.session.AddSentAndAppliedConsent(pendingConsent.pendingSince); } Debug.Log("Received enough votes! (" + (pendingConsent.answerConsentMessages.Count - 1) + ")."); //enough votes received! Pick the most occuring result int mostOccuringAnswerResult = pendingConsent.answerConsentMessages .GroupBy(acm => acm.result) .OrderByDescending(g => g.Count()) .Select(g => g.Key) .FirstOrDefault(); Debug.Log("Most occuring vote result: " + mostOccuringAnswerResult); //apply it AnswerConsentMessage mostOccuringAnswer = pendingConsent.answerConsentMessages[0]; mostOccuringAnswer.result = mostOccuringAnswerResult; ApplyAndSpreadConsentResult(mostOccuringAnswer); pendingConsents.Remove(pendingConsent); }
public static void ReceiveAnswerConsent(AnswerConsentMessage message) { Debug.Log("ReceiveAnswerConsent for " + message.consentAction + ", id: " + message.consentId); int consentId = message.consentId; P2PPendingConsent pendingConsent = pendingConsents.FirstOrDefault(p => p.askConsentMessage.consentId == consentId); if (pendingConsent != null) { pendingConsent.answerConsentMessages.Add(message); if (pendingConsent.answerConsentMessages.Count - 1 >= P2PConnectionManager.connections.Count) { ApplyPendingConsent(pendingConsent); } } else { Debug.Log("Error: receive answer consent for unsent consent request"); } }