public void onTimerEvent ( TimerEvent event , ActivityContextInterface aci ) { if ( getFinalReplySent ( ) ) { aci . detach ( sbbContext . getSbbLocalObject ( ) ) ; final DialogActivity dialog = ( DialogActivity ) aci . getActivity ( ) ; try { dialog . sendRequest ( dialog . createRequest ( Request . BYE ) ) ; } catch ( Exception e ) { getTracer ( ) . severe ( "failure while processing timer event" , e ) ; } } else { // detach from the server tx activity aci . detach ( sbbContext . getSbbLocalObject ( ) ) ; final ServerTransaction serverTransaction = ( ServerTransaction ) aci . getActivity ( ) ; try { // create dialog activity and attach to it final DialogActivity dialog = ( DialogActivity ) sleeSipProvider . getNewDialog ( serverTransaction ) ; final ActivityContextInterfaceExt dialogAci = ( ActivityContextInterfaceExt ) sipActivityContextInterfaceFactory . getActivityContextInterface ( dialog ) ; dialogAci . attach ( sbbContext . getSbbLocalObject ( ) ) ; // send 200 ok Response response = messageFactory . createResponse ( Response . OK , serverTransaction . getRequest ( ) ) ; response . addHeader ( getContactHeader ( ) ) ; serverTransaction . sendResponse ( response ) ; setFinalReplySent ( true ) ; // set timer of 30 secs on the dialog aci to send bye timerFacility . setTimer ( dialogAci , null , System . currentTimeMillis ( ) + 60000L , getTimerOptions ( ) ) ; } catch ( Exception e ) { getTracer ( ) . severe ( "failure while sending 200 OK response" , e ) ; } } }
Event handler method for the timer event .