summaryrefslogtreecommitdiff
path: root/examples/ASX/CCM_App/SC_Server.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/ASX/CCM_App/SC_Server.cpp')
-rw-r--r--examples/ASX/CCM_App/SC_Server.cpp43
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;
}