00001 // -*- C++ -*- 00002 00003 //============================================================================= 00004 /** 00005 * @file COIOP_Endpoint.h 00006 * 00007 * $Id: COIOP_Endpoint.h 74533 2006-09-26 11:59:32Z johnnyw $ 00008 * 00009 * COIOP implementation of PP Framework Endpoint interface. 00010 * 00011 * @author Johnny Willemsen <jwillemsen@remedy.nl> 00012 */ 00013 //============================================================================= 00014 00015 00016 #ifndef TAO_COIOP_ENDPOINT_H 00017 #define TAO_COIOP_ENDPOINT_H 00018 #include /**/ "ace/pre.h" 00019 00020 #include "tao/orbconf.h" 00021 00022 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00023 # pragma once 00024 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00025 00026 #if defined (TAO_HAS_COIOP) && (TAO_HAS_COIOP != 0) 00027 00028 #include "tao/Strategies/strategies_export.h" 00029 #include "tao/Endpoint.h" 00030 #include "ace/UUID.h" 00031 00032 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00033 00034 class TAO_COIOP_Connection_Handler; 00035 00036 /** 00037 * @class TAO_COIOP_Endpoint 00038 * 00039 * @brief TAO_COIOP_Endpoint 00040 * 00041 * COIOP-specific implementation of PP Framework Endpoint interface. 00042 */ 00043 class TAO_Strategies_Export TAO_COIOP_Endpoint : public TAO_Endpoint 00044 { 00045 public: 00046 00047 friend class TAO_COIOP_Profile; 00048 friend class TAO_SSLIOP_Profile; 00049 00050 // = Initialization and termination methods. 00051 00052 /// Default constructor. 00053 TAO_COIOP_Endpoint (void); 00054 00055 /// Constructor. This is the most efficient constructor since it 00056 /// does not require any address resolution processing. 00057 TAO_COIOP_Endpoint (const ACE_Utils::UUID& uuid); 00058 00059 /// Destructor. 00060 ~TAO_COIOP_Endpoint (void); 00061 00062 /** 00063 * @name TAO_Endpoint Methods 00064 * 00065 * Please check the documentation in Endpoint.h for details. 00066 */ 00067 //@{ 00068 virtual TAO_Endpoint *next (void); 00069 virtual int addr_to_string (char *buffer, size_t length); 00070 virtual TAO_Endpoint *duplicate (void); 00071 00072 /// Return true if this endpoint is equivalent to <other_endpoint>. Two 00073 /// endpoints are equivalent iff their port and host are the same. 00074 CORBA::Boolean is_equivalent (const TAO_Endpoint *other_endpoint); 00075 00076 /// Return a hash value for this object. 00077 CORBA::ULong hash (void); 00078 //@} 00079 00080 // = COIOP_Endpoint-specific methods. 00081 00082 /// Return a pointer to the host string. This object maintains 00083 /// ownership of this string. 00084 const ACE_Utils::UUID& uuid (void) const; 00085 00086 private: 00087 /// UUID uniquely identifying this COIOP endpoint 00088 mutable ACE_Utils::UUID uuid_; 00089 00090 /// COIOP Endpoints can be stringed into a list. Return the next 00091 /// endpoint in the list, if any. 00092 TAO_COIOP_Endpoint *next_; 00093 }; 00094 00095 TAO_END_VERSIONED_NAMESPACE_DECL 00096 00097 #if defined (__ACE_INLINE__) 00098 # include "tao/Strategies/COIOP_Endpoint.inl" 00099 #endif /* __ACE_INLINE__ */ 00100 00101 #endif /* TAO_HAS_COIOP && TAO_HAS_COIOP != 0 */ 00102 00103 #include /**/ "ace/post.h" 00104 #endif /* TAO_COIOP_PROFILE_H */