public void reachabilityChange ( boolean reachable ) { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . entry ( this , tc , "reachabilityChange" , Boolean . valueOf ( reachable ) ) ; Object [ ] clonedConsumerPoints = null ; synchronized ( consumerPoints ) { // If we went from reachable to not reachable - clone the consumer points if ( _currentReachability && ! reachable ) { // we clone the list before notifying the exception, since the CP's may call methods on the CD in the // context of the notification, and don't want a deadlock clonedConsumerPoints = consumerPoints . toArray ( ) ; } _currentReachability = reachable ; } if ( clonedConsumerPoints != null ) { // unreachable. throw exception to ConsumerPoints SIResourceException e = new SIResourceException ( nls . getFormattedMessage ( "ANYCAST_STREAM_UNAVAILABLE_CWSIP0471" , new Object [ ] { getDestName ( ) , SIMPUtils . getMENameFromUuid ( getLocalisationUuid ( ) . toString ( ) ) } , null ) ) ; if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) SibTr . exception ( tc , e ) ; for ( int i = 0 ; i < clonedConsumerPoints . length ; i ++ ) { DispatchableKey ck = ( DispatchableKey ) clonedConsumerPoints [ i ] ; // Only close non gathering consumer points - the ck . getConsumerPoint ( ) . implicitClose ( null , e , _aih . getLocalisationUuid ( ) ) ; } } if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( tc , "reachabilityChange" ) ; }
The reachability to the DME has changed