1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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;
}
|