public OutputHandler handleMessage ( MessageItem msg ) throws SIMPNotPossibleInCurrentConfigurationException { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . entry ( tc , "handleMessage" , msg ) ; //Set the current arrival time for the msg msg . setCurrentMEArrivalTimestamp ( System . currentTimeMillis ( ) ) ; // 169892 // If message's Reliability has not been defined, // default it to that of the Destination Reliability msgReliability = msg . getReliability ( ) ; if ( msgReliability == Reliability . NONE ) { msgReliability = _destination . getDefaultReliability ( ) ; msg . setReliability ( msgReliability ) ; } else { // 169892 // If message's Reliability is more than destinations, for a temporary // destination this is allowed (since max storage strategy will be set), // otherwise throw an exception if ( msgReliability . compareTo ( _destination . getMaxReliability ( ) ) > 0 ) { if ( ( _destination . isTemporary ( ) || _destination . getName ( ) . equals ( _messageProcessor . getTDReceiverAddr ( ) . getDestinationName ( ) ) ) && ( msg . getReliability ( ) . compareTo ( Reliability . RELIABLE_PERSISTENT ) >= 0 ) ) { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) SibTr . debug ( tc , "handleMessage" , "Sending ASSURED message to temporary destination" ) ; } else { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( tc , "handleMessage" , "Reliablity greater than dest" ) ; SIMPNotPossibleInCurrentConfigurationException e = new SIMPNotPossibleInCurrentConfigurationException ( nls_cwsik . getFormattedMessage ( "DELIVERY_ERROR_SIRC_33" , // MESSAGE_RELIABILITY_ERROR_CWSIP0231 new Object [ ] { msg . getReliability ( ) . toString ( ) , _destination . getMaxReliability ( ) . toString ( ) , _destination . getName ( ) , _messageProcessor . getMessagingEngineName ( ) } , null ) ) ; e . setExceptionReason ( SIRCConstants . SIRC0033_MESSAGE_RELIABILITY_ERROR ) ; e . setExceptionInserts ( new String [ ] { msg . getReliability ( ) . toString ( ) , _destination . getMaxReliability ( ) . toString ( ) , _destination . getName ( ) , _messageProcessor . getMessagingEngineName ( ) } ) ; throw e ; } } } // For a temporary destination, maximum storage strategy is STORE_MAYBE (RELIABLE_NON_PERSISTENT) if ( _destination . isTemporary ( ) || _destination . getName ( ) . equals ( _messageProcessor . getTDReceiverAddr ( ) . getDestinationName ( ) ) ) { msg . setMaxStorageStrategy ( AbstractItem . STORE_MAYBE ) ; } if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( tc , "handleMessage" ) ; return null ; }
Puts a message to the InputHandlers destination