diff options
Diffstat (limited to 'examples/ASX/CCM_App/SC_Server.cpp')
-rw-r--r-- | examples/ASX/CCM_App/SC_Server.cpp | 43 |
1 files changed, 12 insertions, 31 deletions
diff --git a/examples/ASX/CCM_App/SC_Server.cpp b/examples/ASX/CCM_App/SC_Server.cpp index 0199451fdd3..e133c3db614 100644 --- a/examples/ASX/CCM_App/SC_Server.cpp +++ b/examples/ASX/CCM_App/SC_Server.cpp @@ -10,7 +10,7 @@ #include "ace/Reactor.h" #include "ace/Sig_Adapter.h" -ACE_RCSID (CCM_App, SC_Server, "$Id$") +ACE_RCSID(CCM_App, SC_Server, "$Id$") class Event_Handler : public ACE_Event_Handler { @@ -18,26 +18,8 @@ public: virtual int handle_input (ACE_HANDLE handle); virtual int handle_close (ACE_HANDLE, ACE_Reactor_Mask); - - virtual int handle_signal (int signum, - siginfo_t *, - ucontext_t *); }; - -// @@ Note that this code is not portable to all OS platforms since -// it does print statements within the signal handler. - -int -Event_Handler::handle_signal (int signum, - siginfo_t *, - ucontext_t *) -{ - if (signum == SIGINT || signum == SIGQUIT) - return -1; - return 0; -} - int Event_Handler::handle_input (ACE_HANDLE handle) { @@ -53,7 +35,7 @@ Event_Handler::handle_input (ACE_HANDLE handle) else if (ACE_OS::write (ACE_STDOUT, buf, n) != n) ACE_ERROR_RETURN ((LM_DEBUG, ACE_TEXT ("%p\n"), ACE_TEXT ("write failed")), - -1); + -1); else return 0; } @@ -63,8 +45,6 @@ Event_Handler::handle_close (ACE_HANDLE, ACE_Reactor_Mask) { ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("closing Event_Handler\n"))); - //ACE_Reactor::instance ()->remove_handler (this,ACE_Event_Handler::ALL_EVENTS_MASK); - this->remove_stdin_handler (ACE_Reactor::instance (),ACE_Thread_Manager::instance ()); ACE_Reactor::instance ()->end_reactor_event_loop (); return 0; } @@ -74,6 +54,7 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[]) { ACE_Service_Config loggerd; Event_Handler handler; + ACE_Sig_Adapter shutdown_handler ((ACE_Sig_Handler_Ex) ACE_Reactor::end_event_loop); if (ACE_Event_Handler::register_stdin_handler (&handler, ACE_Reactor::instance (), @@ -91,16 +72,16 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[]) ACE_TEXT ("%p\n%a"), ACE_TEXT ("open"), 1)); - else - { - ACE_Reactor::instance ()->register_handler (SIGQUIT, &handler); - ACE_Reactor::instance ()->register_handler (SIGINT, &handler); - ACE_Reactor::instance ()->run_reactor_event_loop (); + else if (ACE_Reactor::instance ()->register_handler + (SIGINT, &shutdown_handler) == -1) + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("%p\n%a"), + ACE_TEXT ("register_handler"), + 1)); - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("SC_Server exiting\n"))); + // Perform logging service until we receive SIGINT. - loggerd.fini_svcs (); - } + ACE_Reactor::instance ()->run_reactor_event_loop (); + handler.remove_stdin_handler (ACE_Reactor::instance (),ACE_Thread_Manager::instance ()); return 0; } |