#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.
|
|
Ctor.
Definition at line 8 of file Tagged_Profile.inl.
00009 : orb_core_ (orb_core), 00010 discriminator_ (0), 00011 object_key_ (), 00012 profile_ (), 00013 profile_index_ (0), 00014 type_id_ (0) 00015 { 00016 00017 } |
|
|
Definition at line 62 of file Tagged_Profile.inl. 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 = 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 }
|
|
|
Return a const object key.
Definition at line 38 of file Tagged_Profile.inl.
00039 {
00040 return const_cast<TAO_Tagged_Profile *> (this)->object_key ();
00041 }
|
|
|
Save the object key.
Definition at line 29 of file Tagged_Profile.inl. 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_ = true;
00035 }
|
|
|
Return the object key.
Definition at line 20 of file Tagged_Profile.inl. 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_)
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 received from the client. Definition at line 50 of file Tagged_Profile.inl. References profile_index_.
00051 {
00052 return this->profile_index_;
00053 }
|
|
|
get the tagged_profile
Definition at line 44 of file Tagged_Profile.inl.
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.inl. References type_id_.
|
|
|
Unmarshall the IOP::TaggedProfile.
Definition at line 117 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 85 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().
00086 {
00087 this->discriminator_ = TAO_Target_Specification::Key_Addr;
00088
00089 return this->unmarshall_object_key_i (input);
00090 }
|
|
|
Unmarshals the received object key.
Definition at line 94 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().
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 }
|
|
|
Unmarshalls the GIOP::IORAddressingInfo.
Definition at line 128 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(), IOP::TaggedProfileSeq, 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 }
|
|
|
Unmarshall the GIOP 1.2 target address field.
Definition at line 55 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().
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 }
|
|
|
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(). |
1.3.6