diff options
author | nobody <nobody@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1997-01-01 08:00:34 +0000 |
---|---|---|
committer | nobody <nobody@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1997-01-01 08:00:34 +0000 |
commit | 437eea6fa08e931864f89be91d14a816f69075c7 (patch) | |
tree | b8c1fd723fdcd61c3855d3a3a21a9cd45a268219 /ace/Event_Handler_T.h | |
parent | ea0d28240863caf437a18071bfd03e7b146c5ade (diff) | |
download | ATCD-437eea6fa08e931864f89be91d14a816f69075c7.tar.gz |
This commit was manufactured by cvs2svn to create branchunlabeled-4.2.2
'unlabeled-4.2.2'.
Diffstat (limited to 'ace/Event_Handler_T.h')
-rw-r--r-- | ace/Event_Handler_T.h | 180 |
1 files changed, 0 insertions, 180 deletions
diff --git a/ace/Event_Handler_T.h b/ace/Event_Handler_T.h deleted file mode 100644 index c78ace07609..00000000000 --- a/ace/Event_Handler_T.h +++ /dev/null @@ -1,180 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - - -// ============================================================================ -// -// = LIBRARY -// ace -// -// = FILENAME -// Event_Handler_T.h -// -// = AUTHOR -// Doug Schmidt -// -// ============================================================================ - -#if !defined (ACE_EVENT_HANDLER_T_H) -#define ACE_EVENT_HANDLER_T_H - -#include "ace/Event_Handler.h" - -#if defined (ACE_HAS_TEMPLATE_TYPEDEFS) - -template <class T> -class ACE_Export ACE_Event_Handler_T : public ACE_Event_Handler - // = TITLE - // Enable a class that doesn't inherit from the - // ACE_Event_Handler to be incorporated into the ACE_Reactor - // framework. Thanks to Greg Lavender (g.lavender@isode.com) - // for sharing this idea. - // - // = DESCRIPTION - // It is sometimes the case that an application has a hierarchy - // of operation dispatcher classes that have their own inheritance - // hierarchy but also would like to integrate with the ACE_Reactor. - // Rather than adopt a "mixin" approach, it is often cleaner to - // define a template as a subclass of ACE_Event_Handler and paramterize it - // with an operation dispatcher type. - // - // When constructing an instantiation of the ACE_Event_Handler_T object, - // a set of pointers to member functions must be provided so that - // when one of the handle_* methods is called by the ACE_Reactor, - // the appropriate method is called on the underlying operations - // object. This is done since in some cases it is useful to - // map any event that happens to the same method on an object. - // - // The ACE_Event_Handler_T template is instantiated by an operations - // object and registered with the ACE_Reactor, and it then calls the - // appropriate op_handler. So, it's basically just another - // level of indirection in event dispatching. The coupling - // betweent the ultimate handler of the event and the - // ACE_Event_Handler class is relaxed a bit by have this - // intermediate <op_handler_> object of type <T> around. The client - // object can then dynamically change the bindings for the - // various handlers so that during the life of one of the - // operation objects, it can change how it wants events to be - // handled. It just instantiates a new instance of the template - // with different bindings and reregisters this new object with - // the ACE_Reactor. -{ -public: - // = Typedefs to simplify pointer-to-member-function registration. - - // Get/set the underlying handle. - typedef ACE_HANDLE (T::*GET_HANDLE) (void) const; - typedef void (T::*SET_HANDLE) (ACE_HANDLE); - - typedef int (T::*IO_HANDLER) (ACE_HANDLE); - // Handle I/O events. - - typedef int (T::*TO_HANDLER) (const ACE_Time_Value &, const void *); - // Handle timeout events. - - typedef int (T::*CL_HANDLER) (ACE_HANDLE, ACE_Reactor_Mask); - // Handle close events. - - typedef int (T::*SIG_HANDLER) (ACE_HANDLE -#if defined(ACE_HAS_SIGINFO_T) -, siginfo_t*, ucontext_t* -#endif /* ACE_HAS_SIGINFO_T */ -); - // = Initialization and termination methods. - - ACE_Event_Handler_T (T *op_handler, - int delete_handler, - GET_HANDLE get_handle = 0, - IO_HANDLER input = 0, - CL_HANDLER close = 0, - SIG_HANDLER sig = 0, - TO_HANDLER timeout = 0, - IO_HANDLER output = 0, - SET_HANDLE set_handle = 0, - IO_HANDLER except = 0); - // Initialize the op_handler. - - ~ACE_Event_Handler_T (void); - // Close down and delete the <op_handler> - - // = Override all the ACE_Event_Handler methods and have them call - // through to the <T> operations handler. - virtual ACE_HANDLE get_handle (void) const; - virtual void set_handle (ACE_HANDLE); - virtual int handle_input (ACE_HANDLE fd = -1); - virtual int handle_output (ACE_HANDLE fd = -1); - virtual int handle_exception (ACE_HANDLE fd = -1); - virtual int handle_timeout (const ACE_Time_Value &tv, const void *arg = 0); - virtual int handle_close (ACE_HANDLE fd, ACE_Reactor_Mask close_mask); - virtual int handle_signal (ACE_HANDLE signum, siginfo_t * = 0, ucontext_t * = 0); - - // = Get/set the operations handler. - T *op_handler (void); - void op_handler (T *); - - // = Get/set the target pointer-to-member-function used for - // dispatching. - - GET_HANDLE handle_get (void); - void handle_get (GET_HANDLE); - - SET_HANDLE handle_set (void); - void handle_set (SET_HANDLE); - - IO_HANDLER input_handler (void); - void input_handler (IO_HANDLER); - - IO_HANDLER output_handler (void); - void output_handler (IO_HANDLER); - - IO_HANDLER except_handler (void); - void except_handler (IO_HANDLER); - - TO_HANDLER to_handler (void); - void to_handler (TO_HANDLER); - - CL_HANDLER cl_handler (void); - void cl_handler (CL_HANDLER); - - SIG_HANDLER sig_handler (void); - void sig_handler (SIG_HANDLER); - - void dump (void) const; - // Dump the state of an object. - - ACE_ALLOC_HOOK_DECLARE; - // Declare the dynamic allocation hooks. - -protected: - T *op_handler_; - // Pointer to the object that handles all the delegated operations. - - // = Handle input, output, and exception events. - IO_HANDLER input_handler_; - IO_HANDLER output_handler_; - IO_HANDLER except_handler_; - - TO_HANDLER to_handler_; - // Handle timeout events. - - CL_HANDLER cl_handler_; - // Handle close events. - - SIG_HANDLER sig_handler_; - // Handle signal events. - - int delete_handler_; - // Keeps track of whether we need to delete the handler in the - // destructor. - - // = Get/set underlying handle. - SET_HANDLE set_handle_; - GET_HANDLE get_handle_; -}; - -#if defined (__ACE_INLINE__) -#include "ace/Event_Handler_T.i" -#endif /* __ACE_INLINE__ */ - -#endif /* ACE_HAS_TEMPLATE_TYPEDEFS */ -#endif /* ACE_EVENT_HANDLER_H */ |