00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 #ifndef ACE_EVENT_HANDLER_T_H
00014 #define ACE_EVENT_HANDLER_T_H
00015 #include  "ace/pre.h"
00016 
00017 #include "ace/Event_Handler.h"
00018 
00019 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00020 # pragma once
00021 #endif 
00022 
00023 #if defined (ACE_HAS_TEMPLATE_TYPEDEFS)
00024 
00025 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 
00034 
00035 
00036 
00037 
00038 
00039 
00040 
00041 
00042 
00043 
00044 
00045 
00046 
00047 
00048 
00049 
00050 
00051 
00052 
00053 
00054 
00055 
00056 
00057 
00058 
00059 
00060 
00061 
00062 
00063 template <class T>
00064 class ACE_Event_Handler_T : public ACE_Event_Handler
00065 {
00066 public:
00067   
00068 
00069   
00070   typedef ACE_HANDLE (T::*GET_HANDLE) (void) const;
00071   typedef void (T::*SET_HANDLE) (ACE_HANDLE);
00072 
00073 
00074   typedef int (T::*IO_HANDLER) (ACE_HANDLE);
00075 
00076 
00077   typedef int (T::*TO_HANDLER) (const ACE_Time_Value &, const void *);
00078 
00079 
00080   typedef int (T::*CL_HANDLER) (ACE_HANDLE, ACE_Reactor_Mask);
00081 
00082 
00083   typedef int (T::*SIG_HANDLER) (int, siginfo_t*, ucontext_t*);
00084 
00085 
00086   ACE_Event_Handler_T (T *op_handler,
00087                        int delete_handler,
00088                        GET_HANDLE get_handle = 0,
00089                        IO_HANDLER input = 0,
00090                        CL_HANDLER close = 0,
00091                        SIG_HANDLER sig = 0,
00092                        TO_HANDLER timeout = 0,
00093                        IO_HANDLER output = 0,
00094                        SET_HANDLE set_handle = 0,
00095                        IO_HANDLER except = 0);
00096 
00097 
00098   ~ACE_Event_Handler_T (void);
00099 
00100   
00101 
00102   
00103   virtual ACE_HANDLE get_handle (void) const;
00104   virtual void set_handle (ACE_HANDLE);
00105   virtual int handle_input (ACE_HANDLE fd = ACE_INVALID_HANDLE);
00106   virtual int handle_output (ACE_HANDLE fd = ACE_INVALID_HANDLE);
00107   virtual int handle_exception (ACE_HANDLE fd = ACE_INVALID_HANDLE);
00108   virtual int handle_timeout (const ACE_Time_Value &tv, const void *arg = 0);
00109   virtual int handle_close (ACE_HANDLE fd, ACE_Reactor_Mask close_mask);
00110   virtual int handle_signal (int signum, siginfo_t * = 0, ucontext_t * = 0);
00111 
00112   
00113   T *op_handler (void);
00114   void op_handler (T *);
00115 
00116   
00117 
00118   GET_HANDLE handle_get (void);
00119   void handle_get (GET_HANDLE);
00120 
00121   SET_HANDLE handle_set (void);
00122   void handle_set (SET_HANDLE);
00123 
00124   IO_HANDLER input_handler (void);
00125   void input_handler (IO_HANDLER);
00126 
00127   IO_HANDLER output_handler (void);
00128   void output_handler (IO_HANDLER);
00129 
00130   IO_HANDLER except_handler (void);
00131   void except_handler (IO_HANDLER);
00132 
00133   TO_HANDLER to_handler (void);
00134   void to_handler (TO_HANDLER);
00135 
00136   CL_HANDLER cl_handler (void);
00137   void cl_handler (CL_HANDLER);
00138 
00139   SIG_HANDLER sig_handler (void);
00140   void sig_handler (SIG_HANDLER);
00141 
00142 
00143   void dump (void) const;
00144 
00145 
00146   ACE_ALLOC_HOOK_DECLARE;
00147 
00148 protected:
00149 
00150   T *op_handler_;
00151 
00152   
00153   IO_HANDLER input_handler_;
00154   IO_HANDLER output_handler_;
00155   IO_HANDLER except_handler_;
00156 
00157 
00158   TO_HANDLER to_handler_;
00159 
00160 
00161   CL_HANDLER cl_handler_;
00162 
00163 
00164   SIG_HANDLER sig_handler_;
00165 
00166 
00167 
00168   int delete_handler_;
00169 
00170   
00171   SET_HANDLE set_handle_;
00172   GET_HANDLE get_handle_;
00173 };
00174 
00175 ACE_END_VERSIONED_NAMESPACE_DECL
00176 
00177 #if defined (__ACE_INLINE__)
00178 #include "ace/Event_Handler_T.inl"
00179 #endif 
00180 
00181 #if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
00182 #include "ace/Event_Handler_T.cpp"
00183 #endif 
00184 
00185 #if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
00186 #pragma implementation ("Event_Handler_T.cpp")
00187 #endif 
00188 
00189 #endif 
00190 #include  "ace/post.h"
00191 #endif