private static Quorum[] GetParticipatingQuorumList(Gate evalGate, IDictionary <Gate, Quorum> gateQuorumMapping, Circuit circuit)
{
List <Quorum> quorums = new List <Quorum>();
// first add where we're receiving from
for (int i = 0; i < evalGate.InputCount; i++)
{
if (circuit.InputConnectionCounterparties.ContainsKey(evalGate.GetLocalInputAddress(i)))
{
var counterpartGate = circuit.InputConnectionCounterparties[evalGate.GetLocalInputAddress(i)].Gate;
quorums.Add(gateQuorumMapping[counterpartGate]);
}
}
quorums.Add(gateQuorumMapping[evalGate]);
// then add where we're sending to
for (int i = 0; i < evalGate.OutputCount; i++)
{
if (circuit.OutputConnectionCounterparties.ContainsKey(evalGate.GetLocalOutputAddress(i)))
{
var counterpartGate = circuit.OutputConnectionCounterparties[evalGate.GetLocalOutputAddress(i)].Gate;
quorums.Add(gateQuorumMapping[counterpartGate]);
}
}
return(quorums.ToArray());
}