Main Page Namespace List Class Hierarchy Alphabetical List Compound List File List Namespace Members Compound Members File Members Related Pages

# TAO_UIPMC_Profile Class Reference

This class defines the protocol specific attributes required for locating ORBs over a TCP/IP network. More...

`#include <UIPMC_Profile.h>`

Inheritance diagram for TAO_UIPMC_Profile:

[legend]
Collaboration diagram for TAO_UIPMC_Profile:

[legend]
List of all members.

## Public Methods
virtual char | object_key_delimiter (void) const
| TAO_UIPMC_Profile (TAO_ORB_Core *orb_core)
| Profile constructor, default. Used when the profile contents are not yet known or when it is being decoded from an IOR. More...
| TAO_UIPMC_Profile (const ACE_INET_Addr &addr, TAO_ORB_Core *orb_core)
| Profile constructor, same as above except the object_key has already been marshaled. More...
| TAO_UIPMC_Profile (const CORBA::Octet class_d_address[4], CORBA::UShort port, TAO_ORB_Core *orb_core)
| Profile constructor. More...
| TAO_UIPMC_Profile (const char *string, TAO_ORB_Core *orb_core ACE_ENV_ARG_DECL_WITH_DEFAULTS)
| Create object using a string ior. More...
| ~TAO_UIPMC_Profile (void)
| Destructor is to be called only through <_decr_refcnt>. More...
virtual void | parse_string (const char *string ACE_ENV_ARG_DECL)
| Initialize this object using the given input string. Url-style string contain only one endpoint. More...
virtual char * | to_string (ACE_ENV_SINGLE_ARG_DECL)
virtual int | decode (TAO_InputCDR &cdr)
| Initialize this object using the given CDR octet string. More...
virtual int | encode (TAO_OutputCDR &stream) const
| Encode this profile in a stream, i.e. marshal it. More...
virtual int | encode_endpoints (void)
virtual const TAO_ObjectKey & | object_key (void) const
| deprecated. return a reference to the Object Key. More...
virtual TAO_ObjectKey * | _key (void) const
| Return a pointer to the Object Key. The caller owns the memory allocated for the returned key. More...
virtual TAO_Endpoint * | endpoint (void)
| Return pointer to the head of this profile's endpoints list. More...
virtual size_t | endpoint_count (void)
| Return how many endpoints this profile contains. More...
virtual CORBA::Boolean | is_equivalent (const TAO_Profile *other_profile)
virtual CORBA::ULong | hash (CORBA::ULong max ACE_ENV_ARG_DECL_WITH_DEFAULTS)
| Return a hash value for this object. More...
virtual IOP::TaggedProfile & | create_tagged_profile (void)
| Please refer to Profile.h for the documentation of this function. More...
virtual void | request_target_specifier (TAO_Target_Specification &target_spec, TAO_Target_Specification::TAO_Target_Address required_type ACE_ENV_ARG_DECL)
| Set the request target specifier to point to a tagged profile containing the GroupId associated with this profile. More...
virtual int | supports_multicast (void) const
| Returns true since this profile can specify multicast endpoints. More...
void | set_group_info (const char *domain_id, PortableGroup::ObjectGroupId group_id, PortableGroup::ObjectGroupRefVersion ref_version)
| Add the mandatory group component to this profile. More...
virtual void | addressing_mode (CORBA::Short addr_mode ACE_ENV_ARG_DECL)
| Set and validate the addressing mode if the remote ORB returns an exception. More...
## Static Public Methods
const char * | prefix (void)
| Return the char string prefix. More...
int | extract_group_component (const IOP::TaggedProfile &profile, PortableGroup::TagGroupTaggedComponent &group)
## Static Public Attributes
const char | object_key_delimiter_ = '/'
| The object key delimiter that UIPMC uses or expects. More...
## Protected Attributes
TAO_UIPMC_Endpoint | endpoint_
size_t | count_
| Number of endpoints in the list headed by <endpoint_>. More...
## Private Methods
void | create_profile_body (TAO_OutputCDR &cdr) const
| Creates an encapsulation of the ProfileBody struct in the <cdr>. More...
void | update_cached_group_component (void)
| Update the group component in the cached list of tagged components. This needs to be called whenever the group_domain_id, group_id, or ref_version changes. More...
## Private Attributes
TAO_ObjectKey | object_key_
| object_key associated with this profile. This is wasted data for UIPMC since there is no object key here, but is needed to satisfy some of the API calls. More...
IOP::TaggedProfile | tagged_profile_
| Cached version of our tagged profile. More...
ACE_CString | group_domain_id_
| Group Domain ID. More...
PortableGroup::ObjectGroupId | group_id_
| Our group ID within the group domain. More...
PortableGroup::ObjectGroupRefVersion | ref_version_
| The group reference's version. More...

## Detailed Description

This class defines the protocol specific attributes required for locating ORBs over a TCP/IP network.

This class defines the UIPMC profile as specified in the CORBA specification.

## Constructor & Destructor Documentation

TAO_UIPMC_Profile::TAO_UIPMC_Profile | ( | TAO_ORB_Core * | orb_core | ) |

| Profile constructor, default. Used when the profile contents are not yet known or when it is being decoded from an IOR.

TAO_UIPMC_Profile::TAO_UIPMC_Profile | ( | const ACE_INET_Addr & | addr,
|  | TAO_ORB_Core * | orb_core
| ) |

| Profile constructor, same as above except the object_key has already been marshaled.

TAO_UIPMC_Profile::TAO_UIPMC_Profile | ( | const CORBA::Octet | class_d_address[4],
|  | CORBA::UShort | port,
|  | TAO_ORB_Core * | orb_core
| ) |

| Profile constructor.

TAO_UIPMC_Profile::TAO_UIPMC_Profile | ( | const char * | string,
|  | TAO_ORB_Core *orb_core | ACE_ENV_ARG_DECL_WITH_DEFAULTS
| ) |

| Create object using a string ior.

TAO_UIPMC_Profile::~TAO_UIPMC_Profile | ( | void |  | ) |

| Destructor is to be called only through <_decr_refcnt>.

## Member Function Documentation

ACE_INLINE TAO_ObjectKey * TAO_UIPMC_Profile::_key | ( | void |  | ) | const`[virtual]`

| Return a pointer to the Object Key. The caller owns the memory allocated for the returned key. Reimplemented from TAO_Profile.

void TAO_UIPMC_Profile::addressing_mode | ( | CORBA::Short addr_mode | ACE_ENV_ARG_DECL | ) | `[virtual]`

| Set and validate the addressing mode if the remote ORB returns an exception. Reimplemented from TAO_Profile.

void TAO_UIPMC_Profile::create_profile_body | ( | TAO_OutputCDR & | encap | ) | const`[private]`

| Creates an encapsulation of the ProfileBody struct in the <cdr>.

IOP::TaggedProfile & TAO_UIPMC_Profile::create_tagged_profile | ( | void |  | ) | `[virtual]`

| Please refer to Profile.h for the documentation of this function. Reimplemented from TAO_Profile.

int TAO_UIPMC_Profile::decode | ( | TAO_InputCDR & | cdr | ) | `[virtual]`

| Initialize this object using the given CDR octet string. Reimplemented from TAO_Profile.

int TAO_UIPMC_Profile::encode | ( | TAO_OutputCDR & | stream | ) | const`[virtual]`

| Encode this profile in a stream, i.e. marshal it. Reimplemented from TAO_Profile.

int TAO_UIPMC_Profile::encode_endpoints | ( | void |  | ) | `[virtual]`

| Encodes this profile's endpoints into a tagged component. This is done only if RTCORBA is enabled, since currently this is the only case when we have more than one endpoint per profile. Returns 0 on success and -1 on failure. Endpoints are transmitted using TAO-proprietory tagged component. Component tag is TAO_TAG_ENDPOINTS and component data is an encapsulation of a sequence of structs, each representing a single endpoint. Data format is specified in iiop_endpoins.pidl. Multiple TAG_ALTERNATE_UIPMC_ADDRESS components can be used instead of a single proprietory component to transmit multiple endpoints. This is somewhat slower and less convenient. Also, TAG_ALTERNATE_UIPMC_ADDRESS does not provide for transmission of endpoint priorities. Reimplemented from TAO_Profile.

TAO_Endpoint * TAO_UIPMC_Profile::endpoint | ( | void |  | ) | `[virtual]`

| Return pointer to the head of this profile's endpoints list. Reimplemented from TAO_Profile.

size_t TAO_UIPMC_Profile::endpoint_count | ( | void |  | ) | `[virtual]`

| Return how many endpoints this profile contains. Reimplemented from TAO_Profile.

int TAO_UIPMC_Profile::extract_group_component | ( | const IOP::TaggedProfile & | profile,
|  | PortableGroup::TagGroupTaggedComponent & | group
| ) | `[static]`

CORBA::ULong TAO_UIPMC_Profile::hash | ( | CORBA::ULong max | ACE_ENV_ARG_DECL_NOT_USED | ) | `[virtual]`

| Return a hash value for this object. Reimplemented from TAO_Profile.

CORBA::Boolean TAO_UIPMC_Profile::is_equivalent | ( | const TAO_Profile * | other_profile | ) | `[virtual]`

| Return true if this profile is equivalent to other_profile. Two profiles are equivalent iff their tag, object_key, version and all endpoints are the same. Reimplemented from TAO_Profile.

ACE_INLINE const TAO_ObjectKey & TAO_UIPMC_Profile::object_key | ( | void |  | ) | const`[virtual]`

| deprecated. return a reference to the Object Key. @ Reimplemented from TAO_Profile.

char TAO_UIPMC_Profile::object_key_delimiter | ( | void |  | ) | const`[virtual]`

| Reimplemented from TAO_Profile.

void TAO_UIPMC_Profile::parse_string | ( | const char *string | ACE_ENV_ARG_DECL | ) | `[virtual]`

| Initialize this object using the given input string. Url-style string contain only one endpoint. Reimplemented from TAO_Profile.

const char * TAO_UIPMC_Profile::prefix | ( | void |  | ) | `[static]`

| Return the char string prefix.

void TAO_UIPMC_Profile::request_target_specifier | ( | TAO_Target_Specification & | target_spec,
|  | TAO_Target_Specification::TAO_Target_Address required_type | ACE_ENV_ARG_DECL
| ) | `[virtual]`

| Set the request target specifier to point to a tagged profile containing the GroupId associated with this profile.

void TAO_UIPMC_Profile::set_group_info | ( | const char * | domain_id,
|  | PortableGroup::ObjectGroupId | group_id,
|  | PortableGroup::ObjectGroupRefVersion | ref_version
| ) |

| Add the mandatory group component to this profile.

int TAO_UIPMC_Profile::supports_multicast | ( | void |  | ) | const`[virtual]`

| Returns true since this profile can specify multicast endpoints. Reimplemented from TAO_Profile.

char * TAO_UIPMC_Profile::to_string | ( | ACE_ENV_SINGLE_ARG_DECL |  | ) | `[virtual]`

| Return a string representation for this profile. client must deallocate memory. This is used to create url-style reference. Only one endpoint is included into the string. Reimplemented from TAO_Profile.

void TAO_UIPMC_Profile::update_cached_group_component | ( | void |  | ) | `[private]`

| Update the group component in the cached list of tagged components. This needs to be called whenever the group_domain_id, group_id, or ref_version changes.

## Member Data Documentation

size_t TAO_UIPMC_Profile::count_`[protected]`

| Number of endpoints in the list headed by <endpoint_>.

TAO_UIPMC_Endpoint TAO_UIPMC_Profile::endpoint_`[protected]`

| Head of this profile's list of endpoints. This endpoint is not dynamically allocated because a profile always contains at least one endpoint. Currently, a profile contains more than one endpoint, i.e., list contains more than just the head, only when RTCORBA is enabled. However, in the near future, this will be used in nonRT mode as well, e.g., to support TAG_ALTERNATE_IIOP_ADDRESS feature. Addressing info of the default endpoint, i.e., head of the list, is transmitted using standard UIPMC ProfileBody components. See <encode_endpoints> method documentation above for how the rest of the endpoint list is transmitted.

ACE_CString TAO_UIPMC_Profile::group_domain_id_`[private]`

| Group Domain ID.

PortableGroup::ObjectGroupId TAO_UIPMC_Profile::group_id_`[private]`

| Our group ID within the group domain.

TAO_ObjectKey TAO_UIPMC_Profile::object_key_`[private]`

| object_key associated with this profile. This is wasted data for UIPMC since there is no object key here, but is needed to satisfy some of the API calls.

const char TAO_UIPMC_Profile::object_key_delimiter_ = '/'`[static]`

| The object key delimiter that UIPMC uses or expects.

PortableGroup::ObjectGroupRefVersion TAO_UIPMC_Profile::ref_version_`[private]`

| The group reference's version.

IOP::TaggedProfile TAO_UIPMC_Profile::tagged_profile_`[private]`

| Cached version of our tagged profile.

The documentation for this class was generated from the following files:

- UIPMC_Profile.h
- UIPMC_Profile.cpp
- UIPMC_Profile.i