private int checkTargetAbleToAcceptOrExceptionMessage ( JsDestinationAddress targetDestinationAddr ) throws SITemporaryDestinationNotFoundException , SIResourceException , SINotPossibleInCurrentConfigurationException { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . entry ( tc , "checkTargetAbleToAcceptOrExceptionMessage" , targetDestinationAddr ) ; int blockingReason = DestinationHandler . OUTPUT_HANDLER_NOT_FOUND ; // If the original routingDestination address in the message was blank we simply return // 'not found'. if ( targetDestinationAddr != null ) { // Lookup the routing (target) destination. This may throw a SIMPNotPossibleInCurrentConfigurationException. DestinationHandler targetDestination = _messageProcessor . getDestinationManager ( ) . getDestination ( targetDestinationAddr , false ) ; SIBUuid8 targetDestinationMEUuid = targetDestinationAddr . getME ( ) ; // Can the routing destination accept a message blockingReason = targetDestination . checkCanAcceptMessage ( targetDestinationMEUuid , null ) ; // If the target is full (or put-disabled, etc) then we want to go on & see if we can // put to the exception destination of the target destination if ( blockingReason != DestinationHandler . OUTPUT_HANDLER_FOUND ) { int linkBlockingReason = checkCanExceptionMessage ( targetDestination ) ; // If we can exception the message then reset the blockingReason return code if ( linkBlockingReason == DestinationHandler . OUTPUT_HANDLER_FOUND ) blockingReason = DestinationHandler . OUTPUT_HANDLER_FOUND ; } } if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( tc , "checkTargetAbleToAcceptOrExceptionMessage" , Integer . valueOf ( blockingReason ) ) ; return blockingReason ; }
See if a target destination or if necessary its exception destination can handle any more messages .