00001 // -*- C++ -*- 00002 00003 // =================================================================== 00004 /** 00005 * @file COIOP_Connection_Handler.h 00006 * 00007 * $Id: COIOP_Connection_Handler.h 78931 2007-07-18 09:59:36Z johnnyw $ 00008 * 00009 * @author Johnny Willemsen <jwillemsen@remedy.nl> 00010 */ 00011 // =================================================================== 00012 00013 #ifndef TAO_COIOP_CONNECTION_HANDLER_H 00014 #define TAO_COIOP_CONNECTION_HANDLER_H 00015 00016 #include /**/ "ace/pre.h" 00017 00018 #include "tao/orbconf.h" 00019 00020 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00021 #pragma once 00022 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00023 00024 #if defined (TAO_HAS_COIOP) && (TAO_HAS_COIOP != 0) 00025 00026 #include "tao/Strategies/strategies_export.h" 00027 #include "tao/Wait_Strategy.h" 00028 #include "tao/Connection_Handler.h" 00029 #include "tao/Strategies/COIOP_Transport.h" 00030 #include "ace/Reactor.h" 00031 #include "ace/Acceptor.h" 00032 00033 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00034 00035 // **************************************************************** 00036 00037 /** 00038 * @class TAO_COIOP_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_COIOP_Connection_Handler 00046 : public TAO_COIOP_SVC_HANDLER, 00047 public TAO_Connection_Handler 00048 { 00049 00050 public: 00051 00052 TAO_COIOP_Connection_Handler (ACE_Thread_Manager* t = 0); 00053 00054 /// Constructor. 00055 TAO_COIOP_Connection_Handler (TAO_ORB_Core *orb_core); 00056 00057 /// Destructor. 00058 ~TAO_COIOP_Connection_Handler (void); 00059 00060 /// Called by the <Strategy_Acceptor> when the handler is completely 00061 /// connected. Argument is unused. 00062 virtual int open (void *); 00063 00064 //@{ 00065 /** 00066 * Connection_Handler overloads 00067 */ 00068 virtual int open_handler (void *); 00069 //@} 00070 00071 /// Close called by the Acceptor or Connector when connection 00072 /// establishment fails. 00073 int close (u_long = 0); 00074 00075 //@{ 00076 /** @name Event Handler overloads 00077 */ 00078 virtual int resume_handler (void); 00079 virtual int close_connection (void); 00080 virtual int handle_input (ACE_HANDLE); 00081 virtual int handle_output (ACE_HANDLE); 00082 virtual int handle_close (ACE_HANDLE, ACE_Reactor_Mask); 00083 virtual int handle_timeout (const ACE_Time_Value ¤t_time, 00084 const void *act = 0); 00085 //@} 00086 00087 /// Add ourselves to Cache. 00088 int add_transport_to_cache (void); 00089 00090 }; 00091 00092 TAO_END_VERSIONED_NAMESPACE_DECL 00093 00094 #endif /* TAO_HAS_COIOP && TAO_HAS_COIOP != 0 */ 00095 00096 #include /**/ "ace/post.h" 00097 00098 #endif /* TAO_COIOP_CONNECTION_HANDLER_H */