protected void SendNAK(List <long> sequenceNumbers) { if (sequenceNumbers.Count == 0) { return; } NegativeAcknowledgement nAckPacket = new NegativeAcknowledgement(); nAckPacket.AddLossInfo(sequenceNumbers); nAckPacket.SetSession(session); nAckPacket.DestinationID = session.Destination.SocketID; endpoint.DoSend(nAckPacket); statistics.incNumberOfNAKSent(); }
/** * write a NAK triggered by a received sequence number that is larger than * the largestReceivedSeqNumber + 1 * @param currentSequenceNumber - the currently received sequence number * @throws IOException */ protected void SendNAK(long currentSequenceNumber) { NegativeAcknowledgement nAckPacket = new NegativeAcknowledgement(); nAckPacket.AddLossInfo(largestReceivedSeqNumber + 1, currentSequenceNumber); nAckPacket.SetSession(session); nAckPacket.DestinationID = session.Destination.SocketID; //put all the sequence numbers between (but excluding) these two values into the //receiver loss list for (long i = largestReceivedSeqNumber + 1; i < currentSequenceNumber; i++) { ReceiverLossListEntry detectedLossSeqNumber = new ReceiverLossListEntry(i); receiverLossList.Insert(detectedLossSeqNumber); } endpoint.DoSend(nAckPacket); //logger.info("NAK for "+currentSequenceNumber); statistics.incNumberOfNAKSent(); }