aeron-driver/src/main/java/io/aeron/driver/PublicationImage.java
int processPendingLoss()
    {
        int workCount = 0;
        final long changeNumber = endLossChange;

        if (changeNumber != lastLossChangeNumber)
        {
            final int termId = lossTermId;
            final int termOffset = lossTermOffset;
            final int length = lossLength;

            UNSAFE.loadFence();

            if (changeNumber == beginLossChange)
            {
                if (isReliable)
                {
                    channelEndpoint.sendNakMessage(imageConnections, sessionId, streamId, termId, termOffset, length);
                    nakMessagesSent.incrementOrdered();
                }
                else
                {
                    final UnsafeBuffer termBuffer = termBuffers[indexByTerm(initialTermId, termId)];
                    if (tryFillGap(rawLog.metaData(), termBuffer, termId, termOffset, length))
                    {
                        lossGapFills.incrementOrdered();
                    }
                }

                lastLossChangeNumber = changeNumber;
            }

            workCount = 1;
        }

        return workCount;
    }
int processPendingLoss()
    {
        int workCount = 0;
        final long changeNumber = endLossChange;

        if (changeNumber != lastLossChangeNumber)
        {
            final int termId = lossTermId;
            final int termOffset = lossTermOffset;
            final int length = lossLength;

            UNSAFE.loadFence();

            if (changeNumber == beginLossChange)
            {
                if (isReliable)
                {
                    channelEndpoint.sendNakMessage(imageConnections, sessionId, streamId, termId, termOffset, length);
                    nakMessagesSent.incrementOrdered();
                }
                else
                {
                    final UnsafeBuffer termBuffer = termBuffers[indexByTerm(initialTermId, termId)];
                    if (tryFillGap(rawLog.metaData(), termBuffer, termId, termOffset, length))
                    {
                        lossGapFills.incrementOrdered();
                    }
                }

                lastLossChangeNumber = changeNumber;
            }

            workCount = 1;
        }

        return workCount;
    }
int processPendingLoss ( ) { int workCount = 0 ; final long changeNumber = endLossChange ; if ( changeNumber != lastLossChangeNumber ) { final int termId = lossTermId ; final int termOffset = lossTermOffset ; final int length = lossLength ; UNSAFE . loadFence ( ) ; if ( changeNumber == beginLossChange ) { if ( isReliable ) { channelEndpoint . sendNakMessage ( imageConnections , sessionId , streamId , termId , termOffset , length ) ; nakMessagesSent . incrementOrdered ( ) ; } else { final UnsafeBuffer termBuffer = termBuffers [ indexByTerm ( initialTermId , termId ) ] ; if ( tryFillGap ( rawLog . metaData ( ) , termBuffer , termId , termOffset , length ) ) { lossGapFills . incrementOrdered ( ) ; } } lastLossChangeNumber = changeNumber ; } workCount = 1 ; } return workCount ; }
Called from the {@link Receiver} thread to processing any pending loss of packets.

@return number of work items processed.
Called from the { @link Receiver } thread to processing any pending loss of packets .