private long processNackWithReturnValue ( ControlNack nackMsg ) throws SIResourceException { // This is called by a PubSubOutputHandler when it finds Unknown // ticks in it's own stream and need the InputStream to resend them if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . entry ( tc , "processNackWithReturnValue" , nackMsg ) ; long returnValue = - 1 ; // The upstream cellule for this stream is stored in the originStreamMap // unless we were the originator. SIBUuid12 stream = nackMsg . getGuaranteedStreamUUID ( ) ; if ( _sourceStreamManager . hasStream ( stream ) ) { // 242139: Currently we get back to here for every processNack // that the InternalOutputStream handles. This is an error but // a harmles one. For now the fix is to avoid throwing an exception // as the InternalOutputstream has in fact satisfied the Nack correctly. // The longer term fix is to writeCombined range into the IOS not just the // value if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) SibTr . debug ( tc , "Ignoring processNack on sourceStream at PubSubInputHandler" ) ; returnValue = _sourceStreamManager . getStreamSet ( ) . getStream ( nackMsg . getPriority ( ) , nackMsg . getReliability ( ) ) . getCompletedPrefix ( ) ; } else { // Else we are an IME // send nacks if necessary _internalInputStreamManager . processNack ( nackMsg ) ; } if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( tc , "processNackWithReturnValue" , new Long ( returnValue ) ) ; return returnValue ; }
Process a nack from a PubSubOutputHandler .