The static close() method available for a signal handler as you saw on the previous page. Of course the assumption here is that there would only be one Server instance but since you can't provide a TCP/IP port, that's probably a valid assumption!
// $Id: page06.html,v 1.5 1998/10/27 19:05:55 jcej Exp $ #ifndef SERVER_H #define SERVER_H #include "ace/Acceptor.h" #if !defined (ACE_LACKS_PRAGMA_ONCE) # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ #include "ace/SOCK_Acceptor.h" #include "Handler.h" /* Anytime I have templates I try to remember to create a typedef for the parameterized object. It makes for much less typing later! */ typedef ACE_Acceptor < Handler, ACE_SOCK_ACCEPTOR > Acceptor; class Server { public: // Our simple constructor takes no parameters. To make the // server a bit more useful, you may want to pass in the // TCP/IP port to be used by the acceptor. Server(void); ~Server(void); // Open the server for business int open(void); // Close all server instances by setting the finished_ flag. // Actually, the way this class is written, you can only have // one instance. static int close(void); // Run the server's main loop. The use of the gloabl // ACE_Reactor by this method is what limits us to one Server // instance. int run(void); private: // This will accept client connection requests and instantiate // a Handler object for each new connection. Acceptor acceptor_; // Our shutdown flag static sig_atomic_t finished_; }; #endif // SERVER_H