summaryrefslogtreecommitdiff
path: root/docs/tutorials/005/main
blob: 36c6756146352409c8eb5e623814bec610572cf2 (plain)
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
1.	#include "ace/Reactor.h"
	
2.	ACE_Reactor * g_reactor;
	
3.	static sig_atomic_t finished = 0;
4.	extern "C" void handler (int) { finished = 1; }
	
5.	static const u_short PORT = ACE_DEFAULT_SERVER_PORT;
	
6.	int main (int argc, char *argv[])
	{
7.	  g_reactor = new ACE_Reactor;
	
	  // Acceptor factory.
8.	  Logging_Acceptor peer_acceptor;
	
9.	  if (peer_acceptor.open (ACE_INET_Addr (PORT)) == -1)
10.	    ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "open"), -1);
	
11.	  else if (g_reactor->register_handler (&peer_acceptor, ACE_Event_Handler::READ_MASK) == -1)
12.	    ACE_ERROR_RETURN ((LM_ERROR, "registering service with ACE_Reactor\n"), -1);
	
13.	  ACE_Sig_Action sa ((ACE_SignalHandler) handler, SIGINT);
	
	  // Run forever, performing logging service.
	
14.	  ACE_DEBUG ((LM_DEBUG, "(%P|%t) starting up server logging daemon\n"));
	
	  // Perform logging service until QUIT_HANDLER receives SIGINT.
15.	  while ( !finished )
16.	    g_reactor->handle_events ();
	
17.	  ACE_DEBUG ((LM_DEBUG, "(%P|%t) shutting down server logging daemon\n"));
	
18.	  return 0;
	}