diff options
Diffstat (limited to 'ACE/examples/Reactor/TP_Reactor/AcceptHandler.h')
-rw-r--r-- | ACE/examples/Reactor/TP_Reactor/AcceptHandler.h | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/ACE/examples/Reactor/TP_Reactor/AcceptHandler.h b/ACE/examples/Reactor/TP_Reactor/AcceptHandler.h new file mode 100644 index 00000000000..036f7a36f5a --- /dev/null +++ b/ACE/examples/Reactor/TP_Reactor/AcceptHandler.h @@ -0,0 +1,75 @@ +/* + * ACE reactor demonstration + * + * $Id$ + * Date: 26-Jan-2006 + */ + +#ifndef __ACCEPTHANDLER_H__ +#define __ACCEPTHANDLER_H__ + +#include <ace/Event_Handler.h> +#include <ace/Reactor.h> +#include <ace/SOCK_Acceptor.h> + +/** + * This accept handler is based on the provided solution from the ACE course. + */ +class AcceptHandler : public ACE_Event_Handler { + + private: + + /** + * The reactor to which the accept handler belongs. + */ + ACE_Reactor *mReactor; + + /** + * The socket used for incoming conections. + */ + ACE_SOCK_Acceptor mAcceptor; + + public: + + /** + * @param reactor The reactor which will use this accept handler. + */ + AcceptHandler(ACE_Reactor *reactor = 0); + + /** + * The destructor exists for tracing purposes. + */ + virtual ~AcceptHandler(); + + /** + * Open the listening socket and register the handler with the reactor. + * + * @return 0 on success, -1 on failure + */ + int open(void); + + /** + * @name Overridden methods from the ACE_Event_Handler + */ + // @{ + + /** + * Provides the handle of mAcceptor. + */ + virtual ACE_HANDLE get_handle(void) const; + + /** + * Create a read handler for the new connection and register that + * handler with the reactor. + */ + virtual int handle_input(ACE_HANDLE = ACE_INVALID_HANDLE); + + /** + * Close the listening socket. + */ + virtual int handle_close(ACE_HANDLE, ACE_Reactor_Mask); + // @} +}; + +#endif /* __ACCEPTHANDLER_H__ */ + |