예제 #1
0
파일: Peer.cs 프로젝트: lancao008/Adaptive
 public void Enqueue(UnacknowledgedData data)
 {
     if (Max.HasValue)
     {
         Set(data, Max.GetValueOrDefault() + 1);
     }
     else
     {
         Set(data, 0);
     }
 }
예제 #2
0
파일: Peer.cs 프로젝트: lancao008/Adaptive
        public void Set(UnacknowledgedData data, int frameIndex)
        {
            UnacknowledgedData [frameIndex] = data;
            if (Max.HasValue)
            {
                Max = Math.Max(Max.GetValueOrDefault(), frameIndex);
            }
            else
            {
                Max = frameIndex;
            }
            if (Min.HasValue)
            {
                Min = Math.Min(Min.GetValueOrDefault(), frameIndex);
            }
            else
            {
                Min = frameIndex;
            }

            CheckMinAndMax();
        }
예제 #3
0
        /// <summary>
        /// Queue an input for the current frame. Assumes the input belongs to this peer ID.
        /// </summary>
        /// <param name="input">Input.</param>
        /// <param name="frameIndex">Frame index.</param>
        public void QueueInput(Input input, int frameIndex)
        {
            // If this command is coming late, throw an exception
            if (frameIndex < ElapsedFrameCount)
            {
                throw new LateDataException()
                      {
                          Input      = input,
                          FrameIndex = frameIndex
                      };
            }

            foreach (var peerRecord in m_peers)
            {
                var peer       = peerRecord.Value;
                var latestData = new UnacknowledgedData()
                {
                    input = input
                };

                peer.Set(latestData, frameIndex);
            }
        }