#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 ACE_CString & | 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_ |
ACE_CString | type_id_ |
Friends | |
class | TAO::CSD::FW_Server_Request_Wrapper |
Definition at line 45 of file Tagged_Profile.h.
|
Ctor.
Definition at line 8 of file Tagged_Profile.i.
00009 : orb_core_ (orb_core), 00010 discriminator_ (0), 00011 object_key_ (), 00012 profile_ (), 00013 profile_index_ (0), 00014 type_id_ () 00015 { 00016 00017 } |
|
Definition at line 62 of file Tagged_Profile.i. References discriminator_.
00063 { 00064 return this->discriminator_; 00065 } |
|
Extract the object key from the TaggedProfile and store it in Definition at line 23 of file Tagged_Profile.cpp. References TAO_Thread_Lane_Resources::acceptor_registry(), ACE_ERROR, ACE_TEXT, TAO_Acceptor_Registry::get_acceptor(), TAO_ORB_Core::lane_resources(), LM_ERROR, TAO_Acceptor::object_key(), IOP::TaggedProfile::tag, 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 = 00031 acceptor_registry.get_acceptor (profile.tag); 00032 00033 if (acceptor) 00034 { 00035 // Get the object key 00036 int retval = 00037 acceptor->object_key (profile, 00038 this->object_key_); 00039 if (retval == -1) 00040 { 00041 return 0; 00042 } 00043 } 00044 else 00045 { 00046 if (TAO_debug_level) 00047 { 00048 ACE_ERROR ((LM_ERROR, 00049 ACE_TEXT ("(%P|%t)TAO_Tagged_Profile \n"))); 00050 } 00051 00052 return 0; 00053 } 00054 00055 return 1; 00056 } |
|
Return a const object key.
Definition at line 38 of file Tagged_Profile.i.
00039 { 00040 return const_cast<TAO_Tagged_Profile *> (this)->object_key (); 00041 } |
|
Save the object key.
Definition at line 29 of file Tagged_Profile.i. References TAO::unbounded_value_sequence< T >::get_buffer(), TAO::unbounded_value_sequence< T >::length(), object_key_extracted_, and TAO::unbounded_value_sequence< T >::replace().
00030 { 00031 this->object_key_.replace (object_key.length (), 00032 object_key.length (), 00033 object_key.get_buffer ()); 00034 this->object_key_extracted_ = 1; 00035 } |
|
Return the object key.
Definition at line 20 of file Tagged_Profile.i. References extract_object_key(), and object_key_extracted_. Referenced by TAO_ServerRequest::object_key(), TAO_GIOP_Locate_Request_Header::object_key(), and TAO_ServerRequest::TAO_ServerRequest().
00021 { 00022 if (this->object_key_extracted_ == 0) 00023 this->object_key_extracted_ = this->extract_object_key (this->profile_); 00024 00025 return this->object_key_; 00026 } |
|
Get the profile index, that needs to be used in the sequnce of TaggedProfiles contained IOP::IOR that is receivedfrom the client. Definition at line 50 of file Tagged_Profile.i. References profile_index_.
00051 { 00052 return this->profile_index_; 00053 } |
|
get the tagged_profile
Definition at line 44 of file Tagged_Profile.i.
00045 { 00046 return this->profile_; 00047 } |
|
Accessor to the type_id contained in the IOP::IOR received from the client. Definition at line 56 of file Tagged_Profile.i. References type_id_.
00057 { 00058 return this->type_id_; 00059 } |
|
Unmarshall the IOP::TaggedProfile.
Definition at line 124 of file Tagged_Profile.cpp. References ACE_InputCDR::good_bit(). Referenced by unmarshall_target_address().
|
|
Unmarshals the received object key for GIOP 1.0/1.1.
Definition at line 89 of file Tagged_Profile.cpp. References discriminator_, 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().
00091 { 00092 this->discriminator_ = TAO_Target_Specification::Key_Addr; 00093 00094 return this->unmarshall_object_key_i (input); 00095 } |
|
Unmarshals the received object key.
Definition at line 99 of file Tagged_Profile.cpp. References ACE_InputCDR::good_bit(), object_key_extracted_, ACE_InputCDR::rd_ptr(), ACE_InputCDR::read_long(), TAO::unbounded_value_sequence< T >::replace(), and ACE_InputCDR::skip_bytes(). Referenced by unmarshall_object_key(), and unmarshall_target_address().
00101 { 00102 CORBA::Boolean hdr_status = 00103 (CORBA::Boolean) input.good_bit (); 00104 00105 CORBA::Long key_length = 0; 00106 hdr_status = hdr_status && input.read_long (key_length); 00107 00108 if (hdr_status) 00109 { 00110 this->object_key_.replace (key_length, 00111 key_length, 00112 (CORBA::Octet*)input.rd_ptr (), 00113 0); 00114 input.skip_bytes (key_length); 00115 00116 this->object_key_extracted_ = 1; 00117 } 00118 00119 return hdr_status; 00120 } |
|
Unmarshalls the GIOP::IORAddressingInfo.
Definition at line 137 of file Tagged_Profile.cpp. References ACE_InputCDR::good_bit(), 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().
00139 { 00140 CORBA::Boolean hdr_status = 00141 (CORBA::Boolean) input.good_bit (); 00142 00143 /* 00144 * The GIOP::IORAddressingInfo is defined as follows 00145 * struct IORAddressingInfo 00146 * { 00147 * unsigned long selected_profile_index; 00148 * IOP::IOR ior; 00149 * }; 00150 * 00151 * and the IOP::IOR is defined to be 00152 * struct IOR 00153 * { 00154 * string type_id; 00155 * sequence<TaggedProfile> profiles; 00156 * }; 00157 */ 00158 00159 // First read the profile index 00160 CORBA::ULong prof_index = 0; 00161 00162 hdr_status = 00163 hdr_status && input.read_ulong (prof_index); 00164 00165 // Set the value in TAO_Tagged_Profile 00166 if (hdr_status) 00167 { 00168 this->profile_index_ = prof_index; 00169 } 00170 00171 // Get the length of the type_id 00172 CORBA::Long id_length = 0; 00173 hdr_status = hdr_status && input.read_long (id_length); 00174 00175 if (hdr_status) 00176 { 00177 // Set the type_id 00178 this->type_id_.set (input.rd_ptr (), 00179 0); 00180 00181 input.skip_bytes (id_length); 00182 } 00183 00184 // Unmarshall the sequnce of TaggedProfiles 00185 IOP::TaggedProfileSeq ior_profiles; 00186 00187 hdr_status &= input >> ior_profiles; 00188 00189 // Get the right TaggedProfile from the <ior_profiles> 00190 if (hdr_status) 00191 { 00192 this->profile_ = ior_profiles [prof_index]; 00193 } 00194 00195 return hdr_status; 00196 } |
|
Unmarshall the GIOP 1.2 target address field.
Definition at line 59 of file Tagged_Profile.cpp. References discriminator_, ACE_InputCDR::read_short(), 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().
00060 { 00061 CORBA::Boolean hdr_status = cdr.read_short (this->discriminator_); 00062 00063 if (hdr_status) 00064 { 00065 switch (this->discriminator_) 00066 { 00067 case TAO_Target_Specification::Key_Addr: 00068 hdr_status = this->unmarshall_object_key_i (cdr); 00069 break; 00070 00071 case TAO_Target_Specification::Profile_Addr: 00072 hdr_status = this->unmarshall_iop_profile_i (cdr); 00073 break; 00074 00075 case TAO_Target_Specification::Reference_Addr: 00076 hdr_status = this->unmarshall_ref_addr_i (cdr); 00077 break; 00078 00079 default: 00080 hdr_status = 0; 00081 break; 00082 } 00083 } 00084 00085 return hdr_status; 00086 } |
|
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(), unmarshall_object_key(), and unmarshall_target_address(). |
|
The object key.
Definition at line 111 of file Tagged_Profile.h. |
|
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(). |
|
Our ORB Core.
Definition at line 102 of file Tagged_Profile.h. |
|
The Tagged profile. This class would have the Tagged Profile.
Definition at line 114 of file Tagged_Profile.h. |
|
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(). |
|
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(). |