TAO
2.1.0
|
This class implements the basic interface for supporting multiple profiles. More...
#include <MProfile.h>
Public Member Functions | |
TAO_MProfile (CORBA::ULong sz=0) | |
TAO_MProfile (const TAO_MProfile &mprofiles) | |
TAO_MProfile & | operator= (const TAO_MProfile &mprofiles) |
Assigment operator. | |
~TAO_MProfile (void) | |
int | set (CORBA::ULong sz) |
int | set (const TAO_MProfile &mprofile) |
int | grow (CORBA::ULong sz) |
TAO_Profile * | get_cnext (void) |
Treat as a circular list. | |
TAO_Profile * | get_next (void) |
Get next profile in list, return 0 at end of list. | |
TAO_Profile * | get_cprev (void) |
Assume a circular list of profiles. | |
TAO_Profile * | get_prev (void) |
Get previous profile, stop at beginning of list and return 0. | |
TAO_Profile * | get_current_profile (void) |
TAO_Profile * | get_profile (TAO_PHandle handle) |
Return a pointer to the profile referenced by handle void. | |
TAO_PHandle | get_current_handle (void) |
Returns the index for the current profile. | |
TAO_PHandle | get_current_handle (void) const |
Returns the index for the current profile. | |
CORBA::ULong | profile_count (void) const |
Returns the number of profiles stored in the list (last_+1). | |
CORBA::ULong | size (void) const |
const TAO_Profile * | get_profile (CORBA::ULong slot) const |
void | rewind (void) |
Sets the current slot back to 0. | |
int | add_profile (TAO_Profile *pfile) |
int | give_profile (TAO_Profile *pfile, int share=0) |
int | add_profiles (TAO_MProfile *pfiles) |
int | remove_profile (const TAO_Profile *pfile) |
remove from this MProfile any profiles which also appear in pfiles. | |
int | remove_profiles (const TAO_MProfile *pfiles) |
remove from this MProfile any profiles which also appear in pfiles. | |
void | forward_from (TAO_MProfile *mprofiles) |
TAO_MProfile * | forward_from (void) |
Returns a pointer to the profile which was forwarded. | |
CORBA::Boolean | is_equivalent (const TAO_MProfile *rhs) |
CORBA::ULong | hash (CORBA::ULong max) |
void | policy_list (CORBA::PolicyList *policy_list) |
CORBA::PolicyList * | policy_list (void) |
Protected Member Functions | |
void | create_policy_list (void) |
void | init_policy_list (void) |
Initialize the policy list, demarsharling the policy. | |
TAO_Profile ** | pfiles (void) const |
Protected Attributes | |
CORBA::PolicyList * | policy_list_ |
CORBA::Boolean | is_policy_list_initialized_ |
TAO_SYNCH_RECURSIVE_MUTEX | mutex_ |
Private Member Functions | |
void | cleanup (void) |
Helper method to implement the destructor. | |
int | give_shared_profile (TAO_Profile *pfile) |
Private Attributes | |
TAO_MProfile * | forward_from_ |
TAO_Profile ** | pfiles_ |
Actual list of profiles. | |
TAO_PHandle | current_ |
Points to the next profile to be used. 0 ... size_. | |
TAO_PHandle | size_ |
Max size of array. | |
TAO_PHandle | last_ |
Index plus 1 of last valid entry! May be < size_. | |
Friends | |
class | TAO_Profile |
Stores the policy list for the profile of this MProfile. |
This class implements the basic interface for supporting multiple profiles.
Multiple profiles can be treated either as a circular queue or a linear array of profiles. It is assumed that locking will only be required when a profile list is associated with a TAO_Stub. Thus when the TAO_Stub accepts ownership of an MProfile it also assumes responsibility for controling access (i.e. locking).
TAO_MProfile::TAO_MProfile | ( | CORBA::ULong | sz = 0 | ) |
TAO_MProfile::TAO_MProfile | ( | const TAO_MProfile & | mprofiles | ) |
**NOTE: IF mprofiles->last_ > 0, THEN this->size_ will be set to mprofiles->last_. Otherwise this->size_ - mprofiles->size_. Furthermore, current_ is set back to 0! i.e. rewound. The reference count on any profiles in mprofiles is increment when their references (i.e. pointers) are copied.
TAO_MProfile::~TAO_MProfile | ( | void | ) |
Destructor: decrements reference count on all references profiles!
int TAO_MProfile::add_profile | ( | TAO_Profile * | pfile | ) |
Return the index of this entry or -1 if it can not be added. reference count on profile in incremented!
int TAO_MProfile::add_profiles | ( | TAO_MProfile * | pfiles | ) |
append the profiles in pfiles to this object. The count will be incremented on the individual profile objects.
void TAO_MProfile::cleanup | ( | void | ) | [private] |
Helper method to implement the destructor.
void TAO_MProfile::create_policy_list | ( | void | ) | [protected] |
This method handle the dynamic allocation of the data member <policy_list_>.
void TAO_MProfile::forward_from | ( | TAO_MProfile * | mprofiles | ) |
Set a pointer to the MProfile whose 'current' TAO_Profile was forwarded This object is the set of forwarding profiles.
TAO_MProfile * TAO_MProfile::forward_from | ( | void | ) |
Returns a pointer to the profile which was forwarded.
TAO_Profile * TAO_MProfile::get_cnext | ( | void | ) |
Treat as a circular list.
TAO_Profile * TAO_MProfile::get_cprev | ( | void | ) |
Assume a circular list of profiles.
Returns the index for the current profile.
TAO_PHandle TAO_MProfile::get_current_handle | ( | void | ) | const |
Returns the index for the current profile.
TAO_Profile * TAO_MProfile::get_current_profile | ( | void | ) |
Return a pointer to the current profile, will not increment reference pointer.
TAO_Profile * TAO_MProfile::get_next | ( | void | ) |
Get next profile in list, return 0 at end of list.
TAO_Profile * TAO_MProfile::get_prev | ( | void | ) |
Get previous profile, stop at beginning of list and return 0.
TAO_Profile * TAO_MProfile::get_profile | ( | TAO_PHandle | handle | ) |
Return a pointer to the profile referenced by handle void.
const TAO_Profile * TAO_MProfile::get_profile | ( | CORBA::ULong | slot | ) | const |
Return the profile at position <slot>. If <slot> is out of range it returns 0.
int TAO_MProfile::give_profile | ( | TAO_Profile * | pfile, |
int | share = 0 |
||
) |
Return the index of this entry or -1 if it can not be added. this object assumes ownership of this profile!!
int TAO_MProfile::give_shared_profile | ( | TAO_Profile * | pfile | ) | [private] |
A helper to give_profile to be used when share is true. This method is used primarily to help the corbaloc parser create a single profile with multiple endpoints rather than constructing multiple profiles with 1 endpoint per.
int TAO_MProfile::grow | ( | CORBA::ULong | sz | ) |
increase the number of profiles this object can hold. NOT THREAD SAFE
use all registered profiles. The hash() method is called on each profile and the results are averaged together. NON-THREAD SAFE.
void TAO_MProfile::init_policy_list | ( | void | ) | [protected] |
Initialize the policy list, demarsharling the policy.
CORBA::Boolean TAO_MProfile::is_equivalent | ( | const TAO_MProfile * | rhs | ) |
Returns true of there is at least one profile in first which is_equivalent with at least one profile in second. NON-THREAD SAFE, relies on some other entity to guarentee the profiles will not change during the call.
TAO_MProfile & TAO_MProfile::operator= | ( | const TAO_MProfile & | mprofiles | ) |
Assigment operator.
TAO_Profile ** TAO_MProfile::pfiles | ( | void | ) | const [protected] |
Return the complete list of profiles, this object retains ownership!
void TAO_MProfile::policy_list | ( | CORBA::PolicyList * | policy_list | ) |
Sets the policies list associated with the profiles owned by the TAO_MProfile.
CORBA::PolicyList * TAO_MProfile::policy_list | ( | void | ) |
Gets the policies list associated with the profiles owned by the TAO_MProfile.
CORBA::ULong TAO_MProfile::profile_count | ( | void | ) | const |
Returns the number of profiles stored in the list (last_+1).
int TAO_MProfile::remove_profile | ( | const TAO_Profile * | pfile | ) |
remove from this MProfile any profiles which also appear in pfiles.
int TAO_MProfile::remove_profiles | ( | const TAO_MProfile * | pfiles | ) |
remove from this MProfile any profiles which also appear in pfiles.
void TAO_MProfile::rewind | ( | void | ) |
Sets the current slot back to 0.
int TAO_MProfile::set | ( | CORBA::ULong | sz | ) |
Inits MProfile to hold sz TAO_Profiles. NOT THREAD SAFE
int TAO_MProfile::set | ( | const TAO_MProfile & | mprofile | ) |
Inits this to the values of mprofile. NOTE: We use mprofile->last_ instead of mprofile->size_ to set this->size_. This is so we can use set () to trim a profile list!! NOT THREAD SAFE
CORBA::ULong TAO_MProfile::size | ( | void | ) | const |
return the maximum number of profiles that can be stored in this container, (size_+1)
friend class TAO_Profile [friend] |
Stores the policy list for the profile of this MProfile.
TAO_PHandle TAO_MProfile::current_ [private] |
Points to the next profile to be used. 0 ... size_.
TAO_MProfile* TAO_MProfile::forward_from_ [private] |
Used for chaning references when the current profile is forwarded. Note, this will only be valid for an MProfile which contains a list of forward_profiles for some initial or base profile. This is a backward reference to the profile list which received the relocate message. The actual profile what was forwarded will be forward_from_->get_current_profile ()
TAO_PHandle TAO_MProfile::last_ [private] |
Index plus 1 of last valid entry! May be < size_.
TAO_SYNCH_RECURSIVE_MUTEX TAO_MProfile::mutex_ [protected] |
Mutex used to make sure that only one policy list is created.
TAO_Profile** TAO_MProfile::pfiles_ [private] |
Actual list of profiles.
CORBA::PolicyList* TAO_MProfile::policy_list_ [protected] |
TAO_PHandle TAO_MProfile::size_ [private] |
Max size of array.