00001 // -*- C++ -*- 00002 00003 /** 00004 * @file RT_Transport_Descriptor_Property.h 00005 * 00006 * $Id: RT_Transport_Descriptor_Property.h 81429 2008-04-24 18:49:54Z johnnyw $ 00007 * 00008 * @author Pradeep Gore <pradeep@oomworks.com> 00009 */ 00010 00011 #ifndef TAO_RT_TRANSPORT_DESCRIPTOR_PROPERTY_H 00012 #define TAO_RT_TRANSPORT_DESCRIPTOR_PROPERTY_H 00013 00014 #include /**/ "ace/pre.h" 00015 00016 #include "tao/RTCORBA/rtcorba_export.h" 00017 00018 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00019 # pragma once 00020 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00021 00022 #include "tao/Basic_Types.h" 00023 00024 #include "ace/Global_Macros.h" 00025 00026 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00027 00028 /** 00029 * @class TAO_RT_Transport_Descriptor_Property 00030 * 00031 * @brief Base RT Transport Descriptor Property that can be <insert> ed into the TAO_RT_Transport_Descriptor class. 00032 * 00033 */ 00034 class TAO_RTCORBA_Export TAO_RT_Transport_Descriptor_Property 00035 { 00036 friend class TAO_RT_Transport_Descriptor; 00037 00038 public: 00039 /// Constructor 00040 TAO_RT_Transport_Descriptor_Property (void); 00041 00042 /// Destructor 00043 virtual ~TAO_RT_Transport_Descriptor_Property (void); 00044 00045 virtual TAO_RT_Transport_Descriptor_Property *duplicate (void) = 0; 00046 00047 virtual CORBA::Boolean is_equivalent (const TAO_RT_Transport_Descriptor_Property *other_prop) = 0; 00048 00049 protected: 00050 /// Properties can be chanined using the <next_> pointer; 00051 TAO_RT_Transport_Descriptor_Property* next_; 00052 00053 private: 00054 // = Disallow copying and assignment. 00055 TAO_RT_Transport_Descriptor_Property (const TAO_RT_Transport_Descriptor_Property &); 00056 TAO_RT_Transport_Descriptor_Property & operator= (const TAO_RT_Transport_Descriptor_Property &); 00057 }; 00058 00059 /** 00060 * @class TAO_RT_Transport_Descriptor_Private_Connection_Property 00061 * 00062 * @brief Descriptor Property for Private Connections. 00063 * 00064 * Holds info necessary to identify private connections and 00065 * store/look them up in the Transport Cache. (For description 00066 * of private connections see RTCORBA::PrivateTransportPolicy.) 00067 * 00068 */ 00069 class TAO_RTCORBA_Export TAO_RT_Transport_Descriptor_Private_Connection_Property 00070 : public TAO_RT_Transport_Descriptor_Property 00071 { 00072 public: 00073 /// Constructor 00074 TAO_RT_Transport_Descriptor_Private_Connection_Property (void); 00075 TAO_RT_Transport_Descriptor_Private_Connection_Property (long object_id); 00076 00077 /// Destructor 00078 ~TAO_RT_Transport_Descriptor_Private_Connection_Property (void); 00079 00080 /// Init 00081 void init (long object_id); 00082 00083 virtual TAO_RT_Transport_Descriptor_Property *duplicate (void); 00084 00085 virtual CORBA::Boolean is_equivalent (const TAO_RT_Transport_Descriptor_Property *other_prop); 00086 00087 private: 00088 /** 00089 * Unique identifier of the object to which private connection 00090 * identified with this descriptor belongs. The value of 00091 * @c object_id_ is the @c TAO_Stub* of the object. 00092 */ 00093 long object_id_; 00094 00095 }; 00096 00097 /*****************************************************************************/ 00098 00099 /** 00100 * @class TAO_RT_Transport_Descriptor_Banded_Connection_Property 00101 * 00102 * @brief Descriptor Property for Banded Connections. 00103 * 00104 * This property holds the Band information necessary to identify a banded connection. 00105 * 00106 */ 00107 class TAO_RTCORBA_Export TAO_RT_Transport_Descriptor_Banded_Connection_Property 00108 : public TAO_RT_Transport_Descriptor_Property 00109 { 00110 public: 00111 /// Constructor 00112 TAO_RT_Transport_Descriptor_Banded_Connection_Property (void); 00113 TAO_RT_Transport_Descriptor_Banded_Connection_Property (CORBA::Short low_priority, 00114 CORBA::Short high_priority); 00115 00116 /// Destructor 00117 ~TAO_RT_Transport_Descriptor_Banded_Connection_Property (void); 00118 00119 /// Init 00120 void init (CORBA::Short low_priority, CORBA::Short high_priority); 00121 00122 virtual TAO_RT_Transport_Descriptor_Property *duplicate (void); 00123 00124 virtual CORBA::Boolean is_equivalent (const TAO_RT_Transport_Descriptor_Property *other_prop); 00125 00126 protected: 00127 /// The low priority of the Band. 00128 CORBA::Short low_priority_; 00129 00130 /// The high priority of the Band. 00131 CORBA::Short high_priority_; 00132 }; 00133 00134 TAO_END_VERSIONED_NAMESPACE_DECL 00135 00136 /*****************************************************************************/ 00137 00138 #if defined (__ACE_INLINE__) 00139 #include "tao/RTCORBA/RT_Transport_Descriptor_Property.inl" 00140 #endif /* __ACE_INLINE__ */ 00141 00142 #include /**/ "ace/post.h" 00143 00144 #endif /* TAO_RT_TRANSPORT_DESCRIPTOR_PROPERTY_H */