// Listing 1 code/ch20 #include "ace/Timer_Queue.h" #include "ace/Timer_Heap.h" #include "ace/Timer_Wheel.h" #include "ace/Timer_Hash.h" #include "ace/Timer_List.h" #include "CB.h" #include "TimerDispatcher.h" int ACE_TMAIN (int, ACE_TCHAR *[]) { ACE_Timer_Queue *timer_queue; #if defined(HEAP) ACE_NEW_RETURN (timer_queue, ACE_Timer_Heap, -1); #elsif defined(HASH) ACE_NEW_RETURN (timer_queue, ACE_Timer_Hash, -1); #elsif defined(WHEEL) ACE_NEW_RETURN (timer_queue, ACE_Timer_Wheel, -1); #else ACE_NEW_RETURN (timer_queue, ACE_Timer_List, -1); #endif // setup the timer queue Timer::instance ()->set (timer_queue); CB cb[10]; long args[10]; for (long i = 0; i < 10 ; i++) { ACE_Time_Value const timeout (i); long timerID = Timer::instance ()->schedule (&cb[i], &args[i], timer_queue->gettimeofday () + ACE_Time_Value(5), timeout); // Set the timerID state variable of the handler. cb[i].setID (timerID); // Implicitly send the handler it's timer id. args[i] = timerID; } // "run" the timer. Timer::instance ()->wait_for_event (); return 0; } // Listing 1