00001 // -*- C++ -*- 00002 00003 // =================================================================== 00004 /** 00005 * @file UIOP_Connection_Handler.h 00006 * 00007 * $Id: UIOP_Connection_Handler.h 85817 2009-06-26 20:44:58Z mitza $ 00008 * 00009 * @author Originally by Ossama Othman <ossama@ece.uci.edu> as 00010 * UIOP_Connect.h 00011 * @author modified by Balachandran Natarajan <bala@cs.wustl.edu> 00012 */ 00013 // =================================================================== 00014 #ifndef TAO_UIOP_CONNECTION_HANDLER_H 00015 #define TAO_UIOP_CONNECTION_HANDLER_H 00016 00017 #include /**/ "ace/pre.h" 00018 00019 #include "tao/orbconf.h" 00020 00021 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00022 #pragma once 00023 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00024 00025 #if TAO_HAS_UIOP == 1 00026 00027 #include "tao/Strategies/UIOP_Transport.h" 00028 #include "tao/Connection_Handler.h" 00029 #include "tao/Wait_Strategy.h" 00030 #include "ace/Acceptor.h" 00031 #include "ace/Reactor.h" 00032 00033 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00034 00035 // **************************************************************** 00036 00037 /** 00038 * @class TAO_UIOP_Connection_Handler 00039 * 00040 * @brief Handles requests on a single connection. 00041 * 00042 * The Connection handler which is common for the Acceptor and 00043 * the Connector 00044 */ 00045 class TAO_Strategies_Export TAO_UIOP_Connection_Handler : public TAO_UIOP_SVC_HANDLER, 00046 public TAO_Connection_Handler 00047 { 00048 00049 public: 00050 00051 TAO_UIOP_Connection_Handler (ACE_Thread_Manager* t = 0); 00052 00053 /// Constructor. 00054 TAO_UIOP_Connection_Handler (TAO_ORB_Core *orb_core); 00055 00056 /// Destructor. 00057 ~TAO_UIOP_Connection_Handler (void); 00058 00059 //@{ 00060 /** 00061 * Connection_Handler overloads 00062 */ 00063 virtual int open_handler (void *); 00064 //@} 00065 00066 /// Close called by the Acceptor or Connector when connection 00067 /// establishment fails. 00068 int close (u_long = 0); 00069 00070 //@{ 00071 /** @name Event Handler overloads 00072 */ 00073 virtual int open (void *); 00074 virtual int resume_handler (void); 00075 virtual int close_connection (void); 00076 virtual int handle_input (ACE_HANDLE); 00077 virtual int handle_output (ACE_HANDLE); 00078 virtual int handle_close (ACE_HANDLE, ACE_Reactor_Mask); 00079 virtual int handle_timeout (const ACE_Time_Value ¤t_time, 00080 const void *act = 0); 00081 //@} 00082 00083 /// Add ourselves to Cache. 00084 int add_transport_to_cache (void); 00085 00086 protected: 00087 00088 //@{ 00089 /** 00090 * @name TAO_Connection Handler overloads 00091 */ 00092 virtual int release_os_resources (void); 00093 virtual int handle_write_ready (const ACE_Time_Value *timeout); 00094 //@} 00095 }; 00096 00097 TAO_END_VERSIONED_NAMESPACE_DECL 00098 00099 #endif /* TAO_HAS_UIOP == 1 */ 00100 00101 #include /**/ "ace/post.h" 00102 00103 #endif /* TAO_UIOP_CONNECT_H */