A class to encapsulate all the ways of specifying targets. More...
#include <target_specification.h>
Public Types | |
| enum | TAO_Target_Address { Key_Addr = 0, Profile_Addr, Reference_Addr } |
Public Member Functions | |
| TAO_Target_Specification (void) | |
| Ctor. | |
| void | target_specifier (const TAO::ObjectKey &key) |
| void | target_specifier (IOP::TaggedProfile &profile) |
| Set the target specification by passing in an IOP::TaggedProfile. | |
| void | target_specifier (IOP::IOR &ior, CORBA::ULong prof_index) |
| const TAO::ObjectKey * | object_key (void) |
| const IOP::TaggedProfile * | profile (void) |
| CORBA::ULong | iop_ior (IOP::IOR *&ior) |
| TAO_Target_Address | specifier (void) |
| Access the TArget_Address specifier. | |
Private Attributes | |
| union { | |
| TAO::ObjectKey * object_key_ | |
| IOP::TaggedProfile * profile_ | |
| IOP::IOR * ior_ | |
| } | u_ |
| The union of all the possibilities. | |
| TAO_Target_Address | specifier_ |
| The enum identifier. | |
| CORBA::ULong | profile_index_ |
| The profile index. | |
A class to encapsulate all the ways of specifying targets.
Definition at line 57 of file target_specification.h.
Definition at line 63 of file target_specification.h.
{
// Note that this could be extended for other protocols
Key_Addr = 0,
Profile_Addr,
Reference_Addr
};
| TAO_Target_Specification::TAO_Target_Specification | ( | void | ) |
Ctor.
Definition at line 8 of file target_specification.inl.
:specifier_ (TAO_Target_Specification::Key_Addr), profile_index_ (0) { //no-op }
| CORBA::ULong TAO_Target_Specification::iop_ior | ( | IOP::IOR *& | ior | ) |
Returns a pointer to IOP::IOR through the parameters and the index of the selected profile as a return parameter after a check of the stored specifier. If the stored specifier is not of the right type then this would return a NULL.
Definition at line 69 of file target_specification.inl.
{
if (this->specifier_ == TAO_Target_Specification::Reference_Addr)
{
ior = this->u_.ior_;
return this->profile_index_;
}
ior = 0;
return 0;
}
| const TAO::ObjectKey * TAO_Target_Specification::object_key | ( | void | ) |
Returns the object key after a check of the stored specifier. If the stored specifier is not of the right type then this would return a NULL
Definition at line 51 of file target_specification.inl.
{
if (this->specifier_ == TAO_Target_Specification::Key_Addr)
return this->u_.object_key_;
return 0;
}
| const IOP::TaggedProfile * TAO_Target_Specification::profile | ( | void | ) |
Returns the IOP::TaggedProfile after a check of the stored specifier. If the stored specifier is not of the right type then this would return a NULL
Definition at line 60 of file target_specification.inl.
{
if (this->specifier_ == TAO_Target_Specification::Profile_Addr)
return this->u_.profile_;
return 0;
}
| TAO_Target_Specification::TAO_Target_Address TAO_Target_Specification::specifier | ( | void | ) |
Access the TArget_Address specifier.
Definition at line 82 of file target_specification.inl.
{
return this->specifier_;
}
| void TAO_Target_Specification::target_specifier | ( | IOP::TaggedProfile & | profile | ) |
Set the target specification by passing in an IOP::TaggedProfile.
Definition at line 32 of file target_specification.inl.
{
this->specifier_ = TAO_Target_Specification::Profile_Addr;
this->u_.profile_ = const_cast<IOP::TaggedProfile *> (&profile);
}
| void TAO_Target_Specification::target_specifier | ( | const TAO::ObjectKey & | key | ) |
Set the target specification by giving the object key.
Definition at line 16 of file target_specification.inl.
{
this->specifier_ = TAO_Target_Specification::Key_Addr;
// @@ Bala: this is a good recipe for a crash, if the <key> was on
// the stack or is otherwise destroyed then you are in big
// trouble.
// @@ Carlos: As suggested by you I have documented that in the
// headerfile.
// @@ Bala: beware, documentation is good, code that works in
// general is better.... but you are probably right in this case, i
// suspect this stuff goes right in the critical path, right? So
// making a copy of the object key would be too expensive..
this->u_.object_key_ = const_cast<TAO::ObjectKey *> (&key);
}
| void TAO_Target_Specification::target_specifier | ( | IOP::IOR & | ior, | |
| CORBA::ULong | prof_index | |||
| ) |
Specify the target by passing in the IOP::IOR with a profile index. Please see the header file IOPC.h on why a profile index is required.
Definition at line 41 of file target_specification.inl.
{
this->specifier_ = TAO_Target_Specification::Reference_Addr;
this->u_.ior_ = const_cast<IOP::IOR *> (&ior);
this->profile_index_ = prof_index;
}
| IOP::IOR* TAO_Target_Specification::ior_ |
Definition at line 118 of file target_specification.h.
| TAO::ObjectKey* TAO_Target_Specification::object_key_ |
Definition at line 116 of file target_specification.h.
| IOP::TaggedProfile* TAO_Target_Specification::profile_ |
Definition at line 117 of file target_specification.h.
The profile index.
Definition at line 125 of file target_specification.h.
The enum identifier.
Definition at line 122 of file target_specification.h.
union { ... } TAO_Target_Specification::u_ [private] |
The union of all the possibilities.
1.7.0