コード例 #1
0
    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);
    }
コード例 #2
0
    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");
        }
    }