#include <Tagged_Profile.h>
Collaboration diagram for TAO_Tagged_Profile:
Public Member Functions | |
TAO_Tagged_Profile (TAO_ORB_Core *orb_core) | |
Ctor. | |
CORBA::Boolean | unmarshall_target_address (TAO_InputCDR &cdr) |
Unmarshall the GIOP 1.2 target address field. | |
CORBA::Boolean | unmarshall_object_key (TAO_InputCDR &cdr) |
Unmarshals the received object key for GIOP 1.0/1.1. | |
TAO::ObjectKey & | object_key (void) |
Return the object key. | |
void | object_key (TAO::ObjectKey &object_key) |
Save the object key. | |
const TAO::ObjectKey & | object_key (void) const |
Return a const object key. | |
const IOP::TaggedProfile & | tagged_profile (void) const |
get the tagged_profile | |
CORBA::ULong | profile_index (void) const |
const char * | type_id (void) const |
CORBA::Short | discriminator (void) const |
Private Member Functions | |
CORBA::Boolean | extract_object_key (IOP::TaggedProfile &profile) |
CORBA::Boolean | unmarshall_object_key_i (TAO_InputCDR &cdr) |
Unmarshals the received object key. | |
CORBA::Boolean | unmarshall_iop_profile_i (TAO_InputCDR &cdr) |
Unmarshall the IOP::TaggedProfile. | |
CORBA::Boolean | unmarshall_ref_addr_i (TAO_InputCDR &cdr) |
Unmarshalls the GIOP::IORAddressingInfo. | |
Private Attributes | |
TAO_ORB_Core * | orb_core_ |
Our ORB Core. | |
CORBA::Short | discriminator_ |
Keep track of which kind of target profile that was extracted. | |
CORBA::Boolean | object_key_extracted_ |
Flag to denote whether the object key has been extracted yet. | |
TAO::ObjectKey | object_key_ |
The object key. | |
IOP::TaggedProfile | profile_ |
The Tagged profile. This class would have the Tagged Profile. | |
CORBA::ULong | profile_index_ |
const char * | type_id_ |
Friends | |
class | TAO::CSD::FW_Server_Request_Wrapper |
Definition at line 45 of file Tagged_Profile.h.
TAO_BEGIN_VERSIONED_NAMESPACE_DECL ACE_INLINE TAO_Tagged_Profile::TAO_Tagged_Profile | ( | TAO_ORB_Core * | orb_core | ) |
Ctor.
Definition at line 8 of file Tagged_Profile.inl.
00009 : orb_core_ (orb_core), 00010 discriminator_ (0), 00011 object_key_extracted_ (false), 00012 object_key_ (), 00013 profile_ (), 00014 profile_index_ (0), 00015 type_id_ (0) 00016 { 00017 00018 }
ACE_INLINE CORBA::Short TAO_Tagged_Profile::discriminator | ( | void | ) | const |
Definition at line 63 of file Tagged_Profile.inl.
References discriminator_.
00064 { 00065 return this->discriminator_; 00066 }
TAO_BEGIN_VERSIONED_NAMESPACE_DECL CORBA::Boolean TAO_Tagged_Profile::extract_object_key | ( | IOP::TaggedProfile & | profile | ) | [private] |
Extract the object key from the TaggedProfile and store it in <object_key_>
Definition at line 23 of file Tagged_Profile.cpp.
References ACE_ERROR, ACE_TEXT, TAO_Acceptor_Registry::get_acceptor(), LM_ERROR, TAO_Acceptor::object_key(), and TAO_debug_level.
Referenced by object_key().
00024 { 00025 // Get our Acceptor registry 00026 TAO_Acceptor_Registry &acceptor_registry = 00027 this->orb_core_->lane_resources ().acceptor_registry (); 00028 00029 // Get the right acceptor for the tag in the TaggedProfile 00030 TAO_Acceptor *acceptor = acceptor_registry.get_acceptor (profile.tag); 00031 00032 if (acceptor) 00033 { 00034 // Get the object key 00035 if (acceptor->object_key (profile, this->object_key_) == -1) 00036 { 00037 return false; 00038 } 00039 } 00040 else 00041 { 00042 if (TAO_debug_level) 00043 { 00044 ACE_ERROR ((LM_ERROR, 00045 ACE_TEXT ("(%P|%t)TAO_Tagged_Profile \n"))); 00046 } 00047 00048 return false; 00049 } 00050 00051 return true; 00052 }
ACE_INLINE const TAO::ObjectKey & TAO_Tagged_Profile::object_key | ( | void | ) | const |
Return a const object key.
Definition at line 39 of file Tagged_Profile.inl.
References object_key().
00040 { 00041 return const_cast<TAO_Tagged_Profile *> (this)->object_key (); 00042 }
ACE_INLINE void TAO_Tagged_Profile::object_key | ( | TAO::ObjectKey & | object_key | ) |
Save the object key.
Definition at line 30 of file Tagged_Profile.inl.
References object_key_, and object_key_extracted_.
00031 { 00032 this->object_key_.replace (object_key.length (), 00033 object_key.length (), 00034 object_key.get_buffer ()); 00035 this->object_key_extracted_ = true; 00036 }
ACE_INLINE TAO::ObjectKey & TAO_Tagged_Profile::object_key | ( | void | ) |
Return the object key.
Definition at line 21 of file Tagged_Profile.inl.
References extract_object_key(), object_key_, and object_key_extracted_.
Referenced by TAO_ServerRequest::object_key(), object_key(), TAO_GIOP_Locate_Request_Header::object_key(), and TAO_ServerRequest::TAO_ServerRequest().
00022 { 00023 if (!this->object_key_extracted_) 00024 this->object_key_extracted_ = this->extract_object_key (this->profile_); 00025 00026 return this->object_key_; 00027 }
ACE_INLINE CORBA::ULong TAO_Tagged_Profile::profile_index | ( | void | ) | const |
Get the profile index, that needs to be used in the sequnce of TaggedProfiles contained IOP::IOR that is received from the client.
Definition at line 51 of file Tagged_Profile.inl.
References profile_index_.
00052 { 00053 return this->profile_index_; 00054 }
ACE_INLINE const IOP::TaggedProfile & TAO_Tagged_Profile::tagged_profile | ( | void | ) | const |
get the tagged_profile
Definition at line 45 of file Tagged_Profile.inl.
References profile_.
00046 { 00047 return this->profile_; 00048 }
ACE_INLINE const char * TAO_Tagged_Profile::type_id | ( | void | ) | const |
Accessor to the type_id contained in the IOP::IOR received from the client.
Definition at line 57 of file Tagged_Profile.inl.
References type_id_.
CORBA::Boolean TAO_Tagged_Profile::unmarshall_iop_profile_i | ( | TAO_InputCDR & | cdr | ) | [private] |
Unmarshall the IOP::TaggedProfile.
Definition at line 117 of file Tagged_Profile.cpp.
References ACE_InputCDR::good_bit(), and profile_.
Referenced by unmarshall_target_address().
00118 { 00119 CORBA::Boolean hdr_status = (CORBA::Boolean) input.good_bit (); 00120 00121 // Extract into the IOP::Tagged profile. 00122 hdr_status &= input >> this->profile_; 00123 00124 return hdr_status; 00125 }
CORBA::Boolean TAO_Tagged_Profile::unmarshall_object_key | ( | TAO_InputCDR & | cdr | ) |
Unmarshals the received object key for GIOP 1.0/1.1.
Definition at line 85 of file Tagged_Profile.cpp.
References discriminator_, TAO_Target_Specification::Key_Addr, and unmarshall_object_key_i().
Referenced by TAO_GIOP_Message_Generator_Parser_10::parse_locate_header(), and TAO_GIOP_Message_Generator_Parser_10::parse_request_header().
00086 { 00087 this->discriminator_ = TAO_Target_Specification::Key_Addr; 00088 00089 return this->unmarshall_object_key_i (input); 00090 }
CORBA::Boolean TAO_Tagged_Profile::unmarshall_object_key_i | ( | TAO_InputCDR & | cdr | ) | [private] |
Unmarshals the received object key.
Definition at line 94 of file Tagged_Profile.cpp.
References ACE_InputCDR::good_bit(), object_key_, object_key_extracted_, ACE_InputCDR::rd_ptr(), ACE_InputCDR::read_long(), and ACE_InputCDR::skip_bytes().
Referenced by unmarshall_object_key(), and unmarshall_target_address().
00095 { 00096 CORBA::Boolean hdr_status = (CORBA::Boolean) input.good_bit (); 00097 00098 CORBA::Long key_length = 0; 00099 hdr_status = hdr_status && input.read_long (key_length); 00100 00101 if (hdr_status) 00102 { 00103 this->object_key_.replace (key_length, 00104 key_length, 00105 (CORBA::Octet*)input.rd_ptr (), 00106 0); 00107 input.skip_bytes (key_length); 00108 00109 this->object_key_extracted_ = true; 00110 } 00111 00112 return hdr_status; 00113 }
CORBA::Boolean TAO_Tagged_Profile::unmarshall_ref_addr_i | ( | TAO_InputCDR & | cdr | ) | [private] |
Unmarshalls the GIOP::IORAddressingInfo.
Definition at line 128 of file Tagged_Profile.cpp.
References ACE_InputCDR::good_bit(), profile_, profile_index_, ACE_InputCDR::rd_ptr(), ACE_InputCDR::read_long(), ACE_InputCDR::read_ulong(), ACE_InputCDR::skip_bytes(), and type_id_.
Referenced by unmarshall_target_address().
00129 { 00130 CORBA::Boolean hdr_status = (CORBA::Boolean) input.good_bit (); 00131 00132 /* 00133 * The GIOP::IORAddressingInfo is defined as follows 00134 * struct IORAddressingInfo 00135 * { 00136 * unsigned long selected_profile_index; 00137 * IOP::IOR ior; 00138 * }; 00139 * 00140 * and the IOP::IOR is defined to be 00141 * struct IOR 00142 * { 00143 * string type_id; 00144 * sequence<TaggedProfile> profiles; 00145 * }; 00146 */ 00147 00148 // First read the profile index 00149 CORBA::ULong prof_index = 0; 00150 00151 hdr_status = hdr_status && input.read_ulong (prof_index); 00152 00153 // Set the value in TAO_Tagged_Profile 00154 if (hdr_status) 00155 { 00156 this->profile_index_ = prof_index; 00157 } 00158 00159 // Get the length of the type_id 00160 CORBA::Long id_length = 0; 00161 hdr_status = hdr_status && input.read_long (id_length); 00162 00163 if (hdr_status) 00164 { 00165 // Set the type_id (it is not owned by this object) 00166 this->type_id_ = input.rd_ptr (); 00167 00168 input.skip_bytes (id_length); 00169 } 00170 00171 // Unmarshall the sequnce of TaggedProfiles 00172 IOP::TaggedProfileSeq ior_profiles; 00173 00174 hdr_status &= input >> ior_profiles; 00175 00176 // Get the right TaggedProfile from the <ior_profiles> 00177 if (hdr_status) 00178 { 00179 this->profile_ = ior_profiles [prof_index]; 00180 } 00181 00182 return hdr_status; 00183 }
CORBA::Boolean TAO_Tagged_Profile::unmarshall_target_address | ( | TAO_InputCDR & | cdr | ) |
Unmarshall the GIOP 1.2 target address field.
Definition at line 55 of file Tagged_Profile.cpp.
References TAO_Target_Specification::Key_Addr, TAO_Target_Specification::Profile_Addr, ACE_InputCDR::read_short(), TAO_Target_Specification::Reference_Addr, unmarshall_iop_profile_i(), unmarshall_object_key_i(), and unmarshall_ref_addr_i().
Referenced by TAO_GIOP_Message_Generator_Parser_12::parse_locate_header(), and TAO_GIOP_Message_Generator_Parser_12::parse_request_header().
00056 { 00057 CORBA::Boolean hdr_status = cdr.read_short (this->discriminator_); 00058 00059 if (hdr_status) 00060 { 00061 switch (this->discriminator_) 00062 { 00063 case TAO_Target_Specification::Key_Addr: 00064 hdr_status = this->unmarshall_object_key_i (cdr); 00065 break; 00066 00067 case TAO_Target_Specification::Profile_Addr: 00068 hdr_status = this->unmarshall_iop_profile_i (cdr); 00069 break; 00070 00071 case TAO_Target_Specification::Reference_Addr: 00072 hdr_status = this->unmarshall_ref_addr_i (cdr); 00073 break; 00074 00075 default: 00076 hdr_status = false; 00077 break; 00078 } 00079 } 00080 00081 return hdr_status; 00082 }
friend class TAO::CSD::FW_Server_Request_Wrapper [friend] |
Declare FW_Server_Request_Wrapper a friend This friendship makes the FW_Server_Request_Wrapper be able to clone the TAO_Tagged_Profile data member in TAO_ServerRequest.
Definition at line 52 of file Tagged_Profile.h.
Keep track of which kind of target profile that was extracted.
Definition at line 105 of file Tagged_Profile.h.
Referenced by discriminator(), and unmarshall_object_key().
TAO::ObjectKey TAO_Tagged_Profile::object_key_ [private] |
The object key.
Definition at line 111 of file Tagged_Profile.h.
Referenced by object_key(), and unmarshall_object_key_i().
Flag to denote whether the object key has been extracted yet.
Definition at line 108 of file Tagged_Profile.h.
Referenced by object_key(), and unmarshall_object_key_i().
TAO_ORB_Core* TAO_Tagged_Profile::orb_core_ [private] |
IOP::TaggedProfile TAO_Tagged_Profile::profile_ [private] |
The Tagged profile. This class would have the Tagged Profile.
Definition at line 114 of file Tagged_Profile.h.
Referenced by tagged_profile(), unmarshall_iop_profile_i(), and unmarshall_ref_addr_i().
The profile index incase we receive a GIOP::IORAddressingInfo information
Definition at line 140 of file Tagged_Profile.h.
Referenced by profile_index(), and unmarshall_ref_addr_i().
const char* TAO_Tagged_Profile::type_id_ [private] |
The type_id in the IOP::IOR in case we receive the GIOP::IORAddressingInfo information.
Definition at line 144 of file Tagged_Profile.h.
Referenced by type_id(), and unmarshall_ref_addr_i().