public void receiveMessage ( MEConnection conn , AbstractMessage aMessage ) { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . entry ( tc , "receiveMessage" , new Object [ ] { conn , aMessage , "verboseMsg IN : " + aMessage . toVerboseString ( ) } ) ; // Minimal comms trace of the message we've received if ( TraceComponent . isAnyTracingEnabled ( ) ) { MECommsTrc . traceMessage ( tc , _messageProcessor , aMessage . getGuaranteedSourceMessagingEngineUUID ( ) , MECommsTrc . OP_RECV , conn , aMessage ) ; } // Take a read lock to ensure that we can't be stopped while processing a // message mpioLockManager . lock ( ) ; try { if ( started ) { //pass the message on to the RMR _remoteMessageReciever . receiveMessage ( aMessage ) ; } else if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) { SibTr . debug ( tc , "Ignoring message as in stopped state" ) ; } } catch ( Throwable e ) { // Anything going wrong in Processor (or below, e.g. MsgStore) shouldn't // bring the ME-ME connection down. To get an exception through to here // we must have gone wrong somewhere, i.e. an APAR-kind of event. But even // so, that's no reason to knobble all ME-to-ME communication, so we swallow // any exception here, after spitting out an FFDC. FFDCFilter . processException ( e , "com.ibm.ws.sib.processor.io.MPIO.receiveMessage" , "1:228:1.32" , new Object [ ] { this , aMessage , conn , _messageProcessor . getMessagingEngineName ( ) } ) ; if ( e instanceof Exception ) SibTr . exception ( tc , ( Exception ) e ) ; if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) SibTr . debug ( tc , "Exception occurred when processing a message " + e ) ; // We're not allowed to swallow this exception - let it work its way back to // Comms if ( e instanceof ThreadDeath ) { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( tc , "receiveMessage" , e ) ; throw ( ThreadDeath ) e ; } } finally { mpioLockManager . unlock ( ) ; } if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( tc , "receiveMessage" ) ; }
Receive a new Control message from an ME - ME connection .