summaryrefslogtreecommitdiff
path: root/ACE/examples/Logger/simple-server/server_loggerd.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/examples/Logger/simple-server/server_loggerd.cpp')
-rw-r--r--ACE/examples/Logger/simple-server/server_loggerd.cpp85
1 files changed, 85 insertions, 0 deletions
diff --git a/ACE/examples/Logger/simple-server/server_loggerd.cpp b/ACE/examples/Logger/simple-server/server_loggerd.cpp
new file mode 100644
index 00000000000..f323a2f3826
--- /dev/null
+++ b/ACE/examples/Logger/simple-server/server_loggerd.cpp
@@ -0,0 +1,85 @@
+// $Id$
+
+// This server daemon collects, formats, and displays logging
+// information forwarded from client daemons running on other hosts in
+// the network.
+//
+// In addition, it also illustrates how the ACE_Reactor framework is
+// used.
+
+#include "ace/Get_Opt.h"
+#include "ace/Log_Msg.h"
+#include "ace/Signal.h"
+
+#include "Logging_Acceptor.h"
+#include "Reactor_Singleton.h"
+
+ACE_RCSID(simple_server, server_loggerd, "$Id$")
+
+static sig_atomic_t finished = 0;
+
+extern "C" void
+handler (int)
+{
+ finished = 1;
+}
+
+// It doesn't get anymore const than this....
+static const u_short PORT = ACE_DEFAULT_SERVER_PORT;
+
+int
+ACE_TMAIN (int argc, ACE_TCHAR *argv[])
+{
+ // Register a signal handler.
+ ACE_Sig_Action sa ((ACE_SignalHandler) handler, SIGINT);
+ ACE_UNUSED_ARG (sa);
+
+ Logging_Acceptor *peer_acceptor;
+ ACE_NEW_RETURN (peer_acceptor,
+ Logging_Acceptor,
+ 1);
+
+ ACE_INET_Addr addr (PORT);
+
+ ACE_Get_Opt get_opt (argc, argv, ACE_TEXT ("p:"));
+
+ for (int c; (c = get_opt ()) != -1; )
+ switch (c)
+ {
+ case 'p':
+ addr.set (ACE_OS::atoi (get_opt.opt_arg ()));
+ break;
+ default:
+ break;
+ }
+
+ if (peer_acceptor->open (addr) == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("%p\n"),
+ ACE_TEXT ("open")),
+ -1);
+ else if (REACTOR::instance ()->register_handler
+ (peer_acceptor,
+ ACE_Event_Handler::ACCEPT_MASK) == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("registering service with ACE_Reactor\n")),
+ -1);
+
+ // Run forever, performing the logging service.
+
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("(%P|%t) starting up server logging daemon\n")));
+
+ while (!finished)
+ REACTOR::instance ()->handle_events ();
+
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("(%P|%t) shutting down server logging daemon\n")));
+ return 0;
+}
+
+
+#if defined (ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION)
+template ACE_Singleton<ACE_Reactor, ACE_Null_Mutex> *
+ ACE_Singleton<ACE_Reactor, ACE_Null_Mutex>::singleton_;
+#endif /* ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION */