public final void available(AbstractItemLink link) throws SevereMessageStoreException
    {
        if (_jumpbackEnabled)
        {
            final long newPos = link.getPosition();

            // we need to synchronize the read of the position
            // or we can miss out items when reading an empty queue fast.
            // More importantly, the removal of the next from the cursor cannot
            // happen while we are adding the available
            synchronized(this)
            {
                if (newPos <= _highestPosition)
                {
                    // Only store matching links, 'coz its quicker
                    if (null != link.matches(_filter))
                    {
                        if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "availableLink adding: " + link);

                        _behindList.insert(link);
                    }
                    else
                    {
                        if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "availableLink does not match: " + link);
                    }
                }
                else
                {
                    if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "availableLink seq(" + newPos + ") too large (" + _highestPosition + ")");
                }
            }
        }
        else
        {
            if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "available link - jumpbackDisabled: " + link);
        }
    }
public final void available ( AbstractItemLink link ) throws SevereMessageStoreException { if ( _jumpbackEnabled ) { final long newPos = link . getPosition ( ) ; synchronized ( this ) { if ( newPos <= _highestPosition ) { if ( null != link . matches ( _filter ) ) { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) SibTr . debug ( this , tc , "availableLink adding: " + link ) ; _behindList . insert ( link ) ; } else { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) SibTr . debug ( this , tc , "availableLink does not match: " + link ) ; } } else { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) SibTr . debug ( this , tc , "availableLink seq(" + newPos + ") too large (" + _highestPosition + ")" ) ; } } } else { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) SibTr . debug ( this , tc , "available link - jumpbackDisabled: " + link ) ; } }
The cursor is being told that a link has become available. Add it to the list to revisit, but
only if it is older than the current cursor position.

@param link
@throws SevereMessageStoreException