diff options
Diffstat (limited to 'examples/Reactor/Misc/test_signals_1.cpp')
-rw-r--r-- | examples/Reactor/Misc/test_signals_1.cpp | 111 |
1 files changed, 0 insertions, 111 deletions
diff --git a/examples/Reactor/Misc/test_signals_1.cpp b/examples/Reactor/Misc/test_signals_1.cpp deleted file mode 100644 index f51fb6c9c4a..00000000000 --- a/examples/Reactor/Misc/test_signals_1.cpp +++ /dev/null @@ -1,111 +0,0 @@ -// $Id$ - -// This simple program illustrates the difference between handling -// signals via the Reactor (which doesn't cause the event loop to -// terminate) and signals that aren't handled via the Reactor (which -// do). - -#include "ace/Service_Config.h" - -ACE_RCSID(Misc, test_signals_1, "$Id$") - -// Number of times to allow signal to execute until we quit. -static size_t count = 10; - -static void -my_signal_function (int sig) -{ - ACE_DEBUG ((LM_DEBUG, - "Executed non-ACE signal handler for signal %S\n", - sig)); -} - -class My_Handler : public ACE_Event_Handler -{ -public: - virtual int handle_signal (int sig, - siginfo_t *, - ucontext_t *) - { - // @@ Note that this code is not portable to all OS platforms - // since it uses print statements within signal handler context. - ACE_DEBUG ((LM_DEBUG, - "Executed ACE signal handler for signal %S, count = %d\n", - sig, - count)); - count--; - - if (count == 0) - ACE_Reactor::end_event_loop (); - - return 0; - } - - virtual int handle_timeout (const ACE_Time_Value &, - const void *arg) - { - ACE_DEBUG ((LM_DEBUG, - "%s\n", - (const char *) arg)); - return 0; - } -}; - -int -main (int argc, char *argv[]) -{ - // First you need a handler for the timeout. - My_Handler my_handler; - - // This is the timeout period in seconds. - ACE_Time_Value period (ACE_DEFAULT_TIMEOUT); - - if (argc > 1) - period.set (ACE_OS::atoi (argv[1])); - - // Set up the periodic interval timer. - if (ACE_Reactor::instance ()->schedule_timer - (&my_handler, - "hello", - period, - period) == -1) - ACE_ERROR_RETURN ((LM_DEBUG, - "%p\n", - "schedule_timer"), - -1); - - // Set up an ACE signal handler. - - if (ACE_Reactor::instance ()->register_handler - (SIGINT, - &my_handler) == -1) - ACE_ERROR_RETURN ((LM_DEBUG, - "%p\n", - "register_handler"), - -1); - - // Set up a non-ACE signal handler. When this goes off, the Reactor - // should return from its <run_event_loop> method. - ACE_Sig_Action sig ((ACE_SignalHandler) my_signal_function, - SIGQUIT); - ACE_UNUSED_ARG (sig); - - ACE_DEBUG ((LM_DEBUG, - "starting event loop that runs until you've typed ^C a total of 10 times or ^\\ once.\n")); - - // This call executes the reactor events until we're finished. - int result = ACE_Reactor::run_event_loop (); - - ACE_DEBUG ((LM_DEBUG, - "result = %d\n", - result)); - - // Make sure to remove my_handler before exiting main() since - // otherwise weird things can happen... - if (ACE_Reactor::instance ()->cancel_timer (&my_handler) == -1) - ACE_ERROR_RETURN ((LM_DEBUG, - "%p\n", - "cancel_timer"), - -1); - return 0; -} |