diff options
author | nobody <nobody@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-05-22 03:00:08 +0000 |
---|---|---|
committer | nobody <nobody@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-05-22 03:00:08 +0000 |
commit | d7fba4ec70714ccdf7fb29ce85584a71898b7626 (patch) | |
tree | 94d56571cfade12aedab53a01e77d3498f6de7f4 /examples/Timer_Queue/Reactor_Timer_Queue_Test.cpp | |
parent | 89479b1202f3656b2eab09efe64b1e9e8fd4ced9 (diff) | |
download | ATCD-TAO-0_1_23.tar.gz |
This commit was manufactured by cvs2svn to create tag 'TAO-0_1_23'.TAO-0_1_23
Diffstat (limited to 'examples/Timer_Queue/Reactor_Timer_Queue_Test.cpp')
-rw-r--r-- | examples/Timer_Queue/Reactor_Timer_Queue_Test.cpp | 218 |
1 files changed, 0 insertions, 218 deletions
diff --git a/examples/Timer_Queue/Reactor_Timer_Queue_Test.cpp b/examples/Timer_Queue/Reactor_Timer_Queue_Test.cpp deleted file mode 100644 index e00a2c8a295..00000000000 --- a/examples/Timer_Queue/Reactor_Timer_Queue_Test.cpp +++ /dev/null @@ -1,218 +0,0 @@ -// $Id$ - -// ============================================================================ -// = LIBRARY -// examples -// -// = FILENAME -// Reactor_Timer_Queue_Test -// -// = DESCRIPTION -// This example tests the timer queue mechanism of ACE_Reactor. -// -// = AUTHOR -// Nanbor Wang <nw1@cs.wustl.edu> and -// Sergio Flores-Gaitan <sergio@cs.wustl.edu> -// -// ============================================================================ - -#include "ace/Thread_Manager.h" -#include "ace/Select_Reactor.h" -#include "ace/Reactor.h" -#include "ace/Timer_Heap.h" - -#include "Driver.h" -#include "Reactor_Timer_Queue_Test.h" - -void -Reactor_Timer_Handler::set_timer_id (long tid) -{ - this->tid_ = tid; -} - -int -Reactor_Timer_Handler::handle_timeout (const ACE_Time_Value &tv, - const void *) -{ - // Macro to avoid "warning: unused parameter" type warning. - ACE_UNUSED_ARG (tv); - - ACE_Time_Value txv = ACE_OS::gettimeofday (); - ACE_DEBUG ((LM_DEBUG, "\nTimer #%d fired at %d.%06d (%T)!\n", - this->tid_, txv.sec (), txv.usec ())); - delete this; - - return 0; -} - -Input_Handler::Input_Handler (ACE_Timer_Queue *tq, - Reactor_Timer_Queue_Test_Driver &timer_queue_driver) - : done_ (0), - driver_ (timer_queue_driver) -{ - this->tq_ = tq; -} - -int -Input_Handler::done (void) -{ - return this->done_; -} - -int -Input_Handler::schedule_timer (void *argument) -{ - int delay = *(int *) argument; - Reactor_Timer_Handler *th; - long tid; - - th = new Reactor_Timer_Handler; - if (th != 0) - { - tid = this->reactor ()->schedule_timer (th, - 0, - ACE_Time_Value (0, delay)); - if (tid == -1) - ACE_DEBUG ((LM_DEBUG, "Unable to schedule timer\n")); - else - { - ACE_DEBUG ((LM_DEBUG, - "Timer #%d schedule to fire after %d usec from now.\n", - tid, - delay)); - th->set_timer_id (tid); - } - } - else - ACE_ERROR_RETURN ((LM_ERROR, "not enough memory?\n"), -1); - - return tid; -} - -int -Input_Handler::cancel_timer (void *argument) -{ - int id = *(int *) argument; - return this->reactor ()->cancel_timer (id); -} - -int -Input_Handler::shutdown_timer (void *argument) -{ - // Macro to avoid "warning: unused parameter" type warning. - ACE_UNUSED_ARG (argument); - - this->done_ = 1; - ACE_DEBUG ((LM_DEBUG, "Shutting down event loop\n")); - return -1; -} - -int -Input_Handler::list_timer (void *argument) -{ - // Macro to avoid "warning: unused parameter" type warning. - ACE_UNUSED_ARG (argument); - - ACE_Timer_Queue_Iterator &iter = this->tq_->iter (); - ACE_DEBUG ((LM_DEBUG, "\n\nTimers in queue:\n")); - - for (; ! iter.isdone (); iter.next ()) - { - ACE_Timer_Node *tn = iter.item (); - ACE_DEBUG ((LM_DEBUG, "Timer #%d: %d.%06d\n", - tn->get_timer_id (), - tn->get_timer_value ().sec (), - tn->get_timer_value ().usec ())); - } - return 0; -} - -int -Input_Handler::handle_input (ACE_HANDLE) -{ - return driver_.get_next_request (); -} - -Reactor_Timer_Queue_Test_Driver::Reactor_Timer_Queue_Test_Driver (void) - : thandler_ (&timer_queue_, *this) -{ -} - -Reactor_Timer_Queue_Test_Driver::~Reactor_Timer_Queue_Test_Driver (void) -{ -} - -int -Reactor_Timer_Queue_Test_Driver::display_menu (void) -{ - static char menu[] = - "\n*****\n" - "1) Schedule timer <usec>\n" - "2) Cancel timer <id>\n" - "3) List all timers\n" - "4) Shutdown program\n" - "Enter selection:"; - - ACE_DEBUG ((LM_DEBUG, "%s", menu)); - - return 0; -} - -int -Reactor_Timer_Queue_Test_Driver::init (void) -{ - typedef Command<Input_Handler, Input_Handler::ACTION> CMD; - - // initialize <Command>s with their corresponding <Input_Handler> methods. - ACE_NEW_RETURN (schedule_cmd_, - CMD (thandler_, &Input_Handler::schedule_timer), - -1); - - ACE_NEW_RETURN (cancel_cmd_, - CMD (thandler_, &Input_Handler::cancel_timer), - -1); - - ACE_NEW_RETURN (list_cmd_, - CMD (thandler_, &Input_Handler::list_timer), - -1); - - ACE_NEW_RETURN (shutdown_cmd_, - CMD (thandler_, &Input_Handler::shutdown_timer), - -1); - - ACE_Reactor::instance ()->set_timer_queue (&timer_queue_); - - ACE::register_stdin_handler (&thandler_, - ACE_Reactor::instance (), - ACE_Thread_Manager::instance ()); - - // print the menu of options. - this->display_menu (); - - return 0; -} - -// run test was overrun due to the reactive way of handling input. - -int -Reactor_Timer_Queue_Test_Driver::run_test (void) -{ - ACE_DEBUG ((LM_DEBUG, "TIMER TEST STARTED\n")); - - this->init (); - - // Run until we say stop. - while (thandler_.done () == 0) - ACE_Reactor::instance ()->handle_events (); - - ACE_DEBUG ((LM_DEBUG, "TIMER TEST ENDED\n")); - return 0; -} - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class Timer_Queue_Test_Driver <ACE_Timer_Heap, Input_Handler, Input_Handler::ACTION>; -template class Command<Input_Handler, Input_Handler::ACTION>; -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate Timer_Queue_Test_Driver <ACE_Timer_Heap, Input_Handler, Input_Handler::ACTION> -#pragma instantiate Command<Input_Handler, Input_Handler::ACTION> -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ |