protected static void internalAlarmHandler ( Object arg ) { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . entry ( tc , "internalAlarmHandler" , arg ) ; ResendRecord record = ( ResendRecord ) arg ; synchronized ( _requestMap ) { Long key = new Long ( record . requestID ) ; if ( _requestMap . containsKey ( key ) ) { // Someone still waiting for the request, figure out what to do about it if ( record . triesRemaining != 0 ) { // We have tries remaining so resend // Short circuit if ME unreachable if ( ! record . MP . getMPIO ( ) . isMEReachable ( record . targetUuid ) ) wakeupWaiter ( record . requestID , null ) ; record . MP . getMPIO ( ) . sendToMe ( record . targetUuid , SIMPConstants . CONTROL_MESSAGE_PRIORITY , record . msg ) ; // 219870: use triesRemaining < 0 to try forever if ( record . triesRemaining > 0 ) record . triesRemaining -- ; record . MP . getAlarmManager ( ) . create ( record . resendInterval , _alarmHandler , record ) ; } else { // Wakeup the waiter with a timeout error wakeupWaiter ( record . requestID , null ) ; } } } if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( tc , "internalAlarmHandler" ) ; }
Process a retry alarm .