public void Enqueue(UnacknowledgedData data) { if (Max.HasValue) { Set(data, Max.GetValueOrDefault() + 1); } else { Set(data, 0); } }
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(); }
/// <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); } }