public void AddPacket(SequenceId sequenceId, byte[] octets)
        {
            var now      = monotonicClock.NowMilliseconds();
            var snapshot = new PacketPayload(octets, sequenceId, now);

            lock (packets)
            {
                packets.Add(snapshot);
            }
        }
        public bool Pop(out PacketPayload payload)
        {
            lock (packets)
            {
                if (packets.Count == 0)
                {
                    payload = new PacketPayload();
                    return(false);
                }

                payload = packets[0];
                packets.RemoveAt(0);
                return(true);
            }
        }