summaryrefslogtreecommitdiff
path: root/ACE/apps/JAWS/server/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/apps/JAWS/server/main.cpp')
-rw-r--r--ACE/apps/JAWS/server/main.cpp57
1 files changed, 57 insertions, 0 deletions
diff --git a/ACE/apps/JAWS/server/main.cpp b/ACE/apps/JAWS/server/main.cpp
new file mode 100644
index 00000000000..4f319f02727
--- /dev/null
+++ b/ACE/apps/JAWS/server/main.cpp
@@ -0,0 +1,57 @@
+// $Id$
+
+#include "ace/Service_Config.h"
+#include "ace/Reactor.h"
+#include "ace/Filecache.h"
+
+#include "HTTP_Server.h"
+#include "ace/OS_main.h"
+#include "ace/OS_NS_signal.h"
+
+ACE_RCSID(server, main, "$Id$")
+
+ACE_STATIC_SVC_REQUIRE(HTTP_Server)
+
+#ifdef ACE_HAS_SIG_C_FUNC
+extern "C"
+{
+#endif /* ACE_HAS_SIG_C_FUNC */
+
+ // call exit() so that static destructors get called
+static void
+handler (int)
+{
+ delete (ACE_Filecache *) ACE_Filecache::instance ();
+ ACE_OS::exit (0);
+}
+
+#ifdef ACE_HAS_SIG_C_FUNC
+}
+#endif /* ACE_HAS_SIG_C_FUNC */
+
+// This is the driver entry point into JAWS. It is possible to use
+// JAWS as an ACE Service, as well.
+
+int
+main (int argc, char *argv[])
+{
+ ACE_Service_Config daemon;
+
+ ACE_OS::signal (SIGCHLD, SIG_IGN);
+
+ // SigAction not needed since the handler will shutdown the server.
+ ACE_OS::signal (SIGINT, (ACE_SignalHandler) handler);
+ ACE_OS::signal (SIGUSR2, (ACE_SignalHandler) handler);
+
+ if (daemon.open (argc, argv, ACE_DEFAULT_LOGGER_KEY, 0) != 0)
+ ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "open"), 1);
+
+ // The configured service creates threads, and the
+ // server won't exit until the threads die.
+
+ // Run forever, performing the configured services until we receive
+ // a SIGINT.
+
+
+ return 0;
+}