Beispiel #1
0
        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();
        }
Beispiel #2
0
        /**
         * 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();
        }