/// <summary> Handles a stream based on its header/size. Determines if it should be buffered if out-of-order, /// acked and released if size is equal to header size (ack only), or delivered immediately. </summary> internal void RouteIncomingStream(NetStream strm) { var header = NetHeader.FromStream(strm); int seqDist = NetMath.SeqDistance(header.ObjSequence, LastAcceptedRemoteSequence); // If the stream is only the size of a header, it's likely a forced ack: if (strm.Length <= 120) { AckDelivered(header); strm.Release(); } else if (!RemoteSequenceValid(seqDist)) { strm.Release(); } else if (seqDist != 1) { BufferOutOfOrder(seqDist, strm, header); } else { AckReceived(header); AckDelivered(header); DeliverStream(strm); } }