コード例 #1
0
        // 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);
            }
        }
コード例 #2
0
        // 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);
        }
コード例 #3
0
        public override IEnumerator ReceivePayload(VisualPayload payload)
        {
            var groupId = GroupId.GetFirstValue(payload.Data);

            if (!WaitingTransmissions.ContainsKey(groupId))
            {
                WaitingTransmissions[groupId] = new List <SequencedRepeatPair>();
            }

            WaitingTransmissions[groupId].Add(ProduceTransmissionFunc(payload));

            var iterator = BeginSequenceState.Transmit(payload);

            while (iterator.MoveNext())
            {
                yield return(null);
            }

            //start sequence
            UnwaitGroupId(groupId);
        }
コード例 #4
0
        public override void Unload()
        {
            WaitingTransmissions.Clear();

            base.Unload();
        }