// unwait one groupID public static void UnwaitGroupId(string groupId) { if (!WaitingTransmissions.ContainsKey(groupId)) { return; } var waitingList = WaitingTransmissions[groupId]; for (int i = 0; i < waitingList.Count; i++) { if (waitingList[i].RepeatPairIsCompleted) { waitingList[i].ConcludeFunc(); WaitingTransmissions[groupId].Remove(waitingList[i--]); continue; } if (waitingList[i].PerStepFuncComplete()) { waitingList[i].RepeatPairIsCompleted = true; } } if (!WaitingTransmissions.ContainsKey(groupId)) { return; } if (WaitingTransmissions[groupId].Count == 0) { WaitingTransmissions.Remove(groupId); } }
// conclude a sequence public static void ConcludeSequence(string groupId) { if (!WaitingTransmissions.ContainsKey(groupId)) { return; } for (int i = 0; i < WaitingTransmissions[groupId].Count; i++) { WaitingTransmissions[groupId][i].ConcludeFunc(); } WaitingTransmissions.Remove(groupId); }