public synchronized boolean next(long seqNum)
  {
    if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
      SibTr.entry(tc, "next",
      new Long(seqNum));

    // cancel the existing alarm and create a new one
    expiryAlarmHandle.cancel();
    expiryAlarmHandle =
      am.create(parent.getMessageProcessor().getCustomProperties().get_browse_expiry_timeout(), this);

    if (closed)
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.exit(tc, "next", new Boolean(closed));

      return true;
    }

    if (seqNum == expectedSequenceNumber)
    {
      try
      {
        JsMessage msg = browseCursor.next();
        if (msg != null)
        { // a message was found
          parent.sendBrowseData(msg, remoteMEUuid, gatheringTargetDestUuid, key.getRemoteMEUuid(), key.getBrowseId(), expectedSequenceNumber);
          expectedSequenceNumber++;
        }
        else
        { // no more messages in the cursor
          parent.sendBrowseEnd(remoteMEUuid, gatheringTargetDestUuid, key.getBrowseId(), SIMPConstants.BROWSE_OK);
          close();
        }
      }
      catch (SIException e)
      {
        // SIResourceException shouldn't occur so FFDC.
        FFDCFilter.processException(
          e,
          "com.ibm.ws.sib.processor.impl.AOBrowserSession.next",
          "1:182:1.30",
          this);

        Exception e2 =
          new SIResourceException(nls.getFormattedMessage(
            "INTERNAL_MESSAGING_ERROR_CWSIP0002",
            new Object[] {
              "com.ibm.ws.sib.processor.impl.AOBrowserSession",
              "1:190:1.30",
              e },
            null),
          e);

        SibTr.exception(tc, e2);
        SibTr.error(tc, "INTERNAL_MESSAGING_ERROR_CWSIP0002",
          new Object[] {
            "com.ibm.ws.sib.processor.impl.AOBrowserSession",
            "1:199:1.30",
            e });

        parent.sendBrowseEnd(remoteMEUuid, gatheringTargetDestUuid, key.getBrowseId(), SIMPConstants.BROWSE_STORE_EXCEPTION);
        close();
      }
    }
    else
    { // wrong sequence number
      parent.sendBrowseEnd(remoteMEUuid, gatheringTargetDestUuid, key.getBrowseId(), SIMPConstants.BROWSE_OUT_OF_ORDER);
      close();
    }

    if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
      SibTr.exit(tc, "next", new Boolean(closed));

    return closed;
  }
public synchronized boolean next ( long seqNum ) { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . entry ( tc , "next" , new Long ( seqNum ) ) ; expiryAlarmHandle . cancel ( ) ; expiryAlarmHandle = am . create ( parent . getMessageProcessor ( ) . getCustomProperties ( ) . get_browse_expiry_timeout ( ) , this ) ; if ( closed ) { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( tc , "next" , new Boolean ( closed ) ) ; return true ; } if ( seqNum == expectedSequenceNumber ) { try { JsMessage msg = browseCursor . next ( ) ; if ( msg != null ) { parent . sendBrowseData ( msg , remoteMEUuid , gatheringTargetDestUuid , key . getRemoteMEUuid ( ) , key . getBrowseId ( ) , expectedSequenceNumber ) ; expectedSequenceNumber ++ ; } else { parent . sendBrowseEnd ( remoteMEUuid , gatheringTargetDestUuid , key . getBrowseId ( ) , SIMPConstants . BROWSE_OK ) ; close ( ) ; } } catch ( SIException e ) { FFDCFilter . processException ( e , "com.ibm.ws.sib.processor.impl.AOBrowserSession.next" , "1:182:1.30" , this ) ; Exception e2 = new SIResourceException ( nls . getFormattedMessage ( "INTERNAL_MESSAGING_ERROR_CWSIP0002" , new Object [ ] { "com.ibm.ws.sib.processor.impl.AOBrowserSession" , "1:190:1.30" , e } , null ) , e ) ; SibTr . exception ( tc , e2 ) ; SibTr . error ( tc , "INTERNAL_MESSAGING_ERROR_CWSIP0002" , new Object [ ] { "com.ibm.ws.sib.processor.impl.AOBrowserSession" , "1:199:1.30" , e } ) ; parent . sendBrowseEnd ( remoteMEUuid , gatheringTargetDestUuid , key . getBrowseId ( ) , SIMPConstants . BROWSE_STORE_EXCEPTION ) ; close ( ) ; } } else { parent . sendBrowseEnd ( remoteMEUuid , gatheringTargetDestUuid , key . getBrowseId ( ) , SIMPConstants . BROWSE_OUT_OF_ORDER ) ; close ( ) ; } if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( tc , "next" , new Boolean ( closed ) ) ; return closed ; }
Send the next message in this session to the remote ME.
@param seqNum The sequence number for the next message
@return true if closed, either because reached end of cursor, or due to some failure, or due to expiry; else false