aeron-driver/src/main/java/io/aeron/driver/PublicationImage.java
int sendPendingStatusMessage()
    {
        int workCount = 0;

        if (ACTIVE == state)
        {
            final long changeNumber = endSmChange;

            if (changeNumber != lastSmChangeNumber)
            {
                final long smPosition = nextSmPosition;
                final int receiverWindowLength = nextSmReceiverWindowLength;

                UNSAFE.loadFence();

                if (changeNumber == beginSmChange)
                {
                    final int termId = computeTermIdFromPosition(smPosition, positionBitsToShift, initialTermId);
                    final int termOffset = (int)smPosition & termLengthMask;

                    channelEndpoint.sendStatusMessage(
                        imageConnections, sessionId, streamId, termId, termOffset, receiverWindowLength, (byte)0);

                    statusMessagesSent.incrementOrdered();

                    lastSmPosition = smPosition;
                    lastSmWindowLimit = smPosition + receiverWindowLength;
                    lastSmChangeNumber = changeNumber;
                }

                workCount = 1;
            }
        }

        return workCount;
    }
int sendPendingStatusMessage()
    {
        int workCount = 0;

        if (ACTIVE == state)
        {
            final long changeNumber = endSmChange;

            if (changeNumber != lastSmChangeNumber)
            {
                final long smPosition = nextSmPosition;
                final int receiverWindowLength = nextSmReceiverWindowLength;

                UNSAFE.loadFence();

                if (changeNumber == beginSmChange)
                {
                    final int termId = computeTermIdFromPosition(smPosition, positionBitsToShift, initialTermId);
                    final int termOffset = (int)smPosition & termLengthMask;

                    channelEndpoint.sendStatusMessage(
                        imageConnections, sessionId, streamId, termId, termOffset, receiverWindowLength, (byte)0);

                    statusMessagesSent.incrementOrdered();

                    lastSmPosition = smPosition;
                    lastSmWindowLimit = smPosition + receiverWindowLength;
                    lastSmChangeNumber = changeNumber;
                }

                workCount = 1;
            }
        }

        return workCount;
    }
int sendPendingStatusMessage ( ) { int workCount = 0 ; if ( ACTIVE == state ) { final long changeNumber = endSmChange ; if ( changeNumber != lastSmChangeNumber ) { final long smPosition = nextSmPosition ; final int receiverWindowLength = nextSmReceiverWindowLength ; UNSAFE . loadFence ( ) ; if ( changeNumber == beginSmChange ) { final int termId = computeTermIdFromPosition ( smPosition , positionBitsToShift , initialTermId ) ; final int termOffset = ( int ) smPosition & termLengthMask ; channelEndpoint . sendStatusMessage ( imageConnections , sessionId , streamId , termId , termOffset , receiverWindowLength , ( byte ) 0 ) ; statusMessagesSent . incrementOrdered ( ) ; lastSmPosition = smPosition ; lastSmWindowLimit = smPosition + receiverWindowLength ; lastSmChangeNumber = changeNumber ; } workCount = 1 ; } } return workCount ; }
Called from the {@link Receiver} to send any pending Status Messages.

@return number of work items processed.
Called from the { @link Receiver } to send any pending Status Messages .