public bool TryEnqueueForDelivery(T value, out UdpReliableRecvResult result) { int distance = SequenceDistance(value.Sequence, sequenceNext, sequenceShift); int index = (tail + distance) & mask; if (distance <= -nodes.Length || distance >= nodes.Length) { result = UdpReliableRecvResult.OutOfBounds; return(false); } if (distance < 0) { result = UdpReliableRecvResult.Old; return(false); } if (nodes[index].Received) { result = UdpReliableRecvResult.AlreadyExists; return(false); } nodes[index].Received = true; nodes[index].Value = value; result = UdpReliableRecvResult.Added; return(true); }
public bool Recv_TryEnqueue(T value, out UdpReliableRecvResult result) { return(recv.TryEnqueueForDelivery(value, out result)); }