#include <Stub.h>
Collaboration diagram for TAO_Stub:
Public Methods | |
virtual CORBA::Policy_ptr | get_policy (CORBA::PolicyType type ACE_ENV_ARG_DECL_WITH_DEFAULTS) |
Returns the effective policy if <type> is a known client-exposed policy type. More... | |
virtual CORBA::Policy_ptr | get_client_policy (CORBA::PolicyType type ACE_ENV_ARG_DECL_WITH_DEFAULTS) |
virtual TAO_Stub * | set_policy_overrides (const CORBA::PolicyList &policies, CORBA::SetOverrideType set_add ACE_ENV_ARG_DECL_WITH_DEFAULTS) |
virtual CORBA::PolicyList * | get_policy_overrides (const CORBA::PolicyTypeSeq &types ACE_ENV_ARG_DECL_WITH_DEFAULTS) |
CORBA::Boolean | validate_connection (CORBA::PolicyList_out inconsistent_policies ACE_ENV_ARG_DECL_WITH_DEFAULTS) |
CORBA::Policy_ptr | relative_roundtrip_timeout (void) |
CORBA::Policy_ptr | sync_scope (void) |
CORBA::Policy_ptr | buffering_constraint (void) |
CORBA::Policy_ptr | connection_timeout (void) |
TAO_Sync_Strategy & | sync_strategy (void) |
Return the sync strategy to be used in by the transport. Selection will be based on the SyncScope policies. More... | |
CORBA::ULong | hash (CORBA::ULong maximum ACE_ENV_ARG_DECL_WITH_DEFAULTS) |
All objref representations know how to hash themselves and compare themselves for equivalence to others. More... | |
CORBA::Boolean | is_equivalent (CORBA::Object_ptr other_obj) |
Implement the is_equivalent() method for the CORBA::Object. More... | |
TAO_Stub (const char *repository_id, const TAO_MProfile &profiles, TAO_ORB_Core *orb_core) | |
Construct from a repository ID and a list of profiles. More... | |
CORBA::ULong | _incr_refcnt (void) |
CORBA::ULong | _decr_refcnt (void) |
ACE_Lock * | profile_lock (void) const |
Return the Profile lock. This lock can be used at places where profiles need to be edited. More... | |
TAO_Profile * | profile_in_use (void) |
returns a pointer to the profile_in_use object. This object retains ownership of this profile. More... | |
TAO_MProfile * | make_profiles (void) |
Copy of the profile list, user must free memory when done. More... | |
const TAO_MProfile & | base_profiles (void) const |
Obtain a reference to the basic profile set. More... | |
TAO_MProfile & | base_profiles (void) |
Obtain a reference to the basic profile set. More... | |
const TAO_MProfile * | forward_profiles (void) const |
Obtain a pointer to the forwarded profile set. More... | |
TAO_Profile * | next_profile (void) |
THREAD SAFE. More... | |
TAO_Profile * | next_profile_i (void) |
NON-THREAD SAFE version of next_profile (void). More... | |
void | reset_profiles (void) |
THREAD SAFE this method will reset the base profile list to reference the first profile and if there are anmy existing forward profiles they are reset. More... | |
void | reset_profiles_i (void) |
NON-THREAD SAFE version of reset_profiles (void);. More... | |
CORBA::Boolean | valid_forward_profile (void) |
Returns 1 if a forward profile has successfully been used. profile_success_ && forward_profiles_. More... | |
void | set_valid_profile (void) |
NON-THREAD-SAFE. Will set profile_success_ to 0. More... | |
CORBA::Boolean | valid_profile (void) |
Returns TRUE if a connection was successful with at least one profile. More... | |
TAO_Profile * | base_profiles (const TAO_MProfile &mprofiles) |
Initialize the base_profiles_ and set profile_in_use_ to reference the first profile. More... | |
void | add_forward_profiles (const TAO_MProfile &mprofiles) |
THREAD SAFE. More... | |
CORBA::Boolean | next_profile_retry (void) |
THREAD SAFE Used to get the next profile after the one being used has failed during the initial connect or send of the message! More... | |
TAO_ORB_Core * | orb_core (void) const |
Accessor. More... | |
CORBA::ORB_ptr | servant_orb_ptr (void) |
This returns a duplicated ORB pointer. More... | |
CORBA::ORB_var & | servant_orb_var (void) |
This returns the ORB var itself (generally for temporary use). More... | |
void | servant_orb (CORBA::ORB_ptr orb) |
Accesor and mutator for the servant ORB. More... | |
CORBA::Boolean | service_profile_selection (void) |
Make a call on to services to see whether they have some preferences on selecting the right profiles. More... | |
int | create_ior_info (IOP::IOR *&ior_info, CORBA::ULong &index ACE_ENV_ARG_DECL) throw (CORBA::SystemException) |
Create the IOP::IOR info. More... | |
TAO_SYNCH_MUTEX & | refcount_lock (void) |
This method is meant to be used by the CORBA::Object implementation to allow it to directly manipulate the reference count. More... | |
CORBA::ULong & | refcount (void) |
This method is meant to be used by the CORBA::Object implementation to allow it to directly manipulate the reference count. More... | |
void | destroy (void) |
This method is intended to be used only by the CORBA::Object class. More... | |
Public Attributes | |
CORBA::String_var | type_id |
All objref representations carry around a type ID. More... | |
Protected Methods | |
virtual | ~TAO_Stub (void) |
Destructor is to be called only through _decr_refcnt() to enforce proper reference counting. More... | |
TAO_Stub (const TAO_Stub &) | |
TAO_Stub & | operator= (const TAO_Stub &) |
Protected Attributes | |
TAO_ORB_Core_Auto_Ptr | orb_core_ |
The ORB_Core cannot go away until the object references it creates are destroyed. More... | |
CORBA::ORB_var | orb_ |
CORBA::ORB_var | servant_orb_ |
If this stub refers to a collocated object then we need to hold on to the servant's ORB (which may be different from the client ORB) so that, 1. More... | |
TAO_MProfile | base_profiles_ |
Ordered list of profiles for this object. More... | |
TAO_MProfile * | forward_profiles_ |
The list of forwarding profiles. This is actually implemented as a linked list of TAO_MProfile objects. More... | |
TAO_Profile * | profile_in_use_ |
This is the profile that we are currently sending/receiving with. More... | |
ACE_Lock * | profile_lock_ptr_ |
Mutex to protect access to the forwarding profile. More... | |
size_t | profile_success_ |
Have we successfully talked to the forward profile yet? More... | |
TAO_SYNCH_MUTEX | refcount_lock_ |
Mutex to protect reference count. More... | |
CORBA::ULong | refcount_ |
Number of outstanding references to this object. More... | |
TAO_Policy_Set * | policies_ |
The policy overrides in this object, if nil then use the default policies. More... | |
IOP::IOR * | ior_info_ |
The ior info. More... | |
IOP::IOR * | forwarded_ior_info_ |
Forwarded IOR info. More... | |
Private Methods | |
TAO_Profile * | set_profile_in_use_i (TAO_Profile *pfile) |
Makes a copy of the profile and frees the existing profile_in_use. NOT THREAD SAFE. More... | |
void | reset_base () |
NON-THREAD-SAFE. Utility method which resets or initializes the base_profile list and forward flags. More... | |
void | forward_back_one (void) |
NON-THREAD-SAFE. Utility method which unrolls (removes or pops) the top most forwarding profile list. More... | |
void | reset_forward () |
NOT THREAD-SAFE. Utility method which pops all forward profile lists and resets the forward_profiles_ pointer. More... | |
TAO_Profile * | next_forward_profile (void) |
NON-THREAD-SAFE. utility method for next_profile. More... | |
int | get_profile_ior_info (TAO_MProfile &profile, IOP::IOR *&ior_info ACE_ENV_ARG_DECL) throw (CORBA::SystemException) |
THREAD-SAFE Create the IOR info. More... |
Per-objref data includes the (protocol-specific) Profile, which is handled by placing it into a subclass of this type along with data that may be used in protocol-specific caching schemes. The type ID (the data specified by CORBA 2.0 that gets exposed "on the wire", and in stringified objrefs) is held by this module. The stub APIs are member functions of this type.
|
Construct from a repository ID and a list of profiles.
|
|
Destructor is to be called only through _decr_refcnt() to enforce proper reference counting.
|
|
|
|
|
|
|
|
THREAD SAFE. Set the forward_profiles. This object will assume ownership of this TAO_MProfile object!! |
|
Initialize the base_profiles_ and set profile_in_use_ to reference the first profile.
|
|
Obtain a reference to the basic profile set.
|
|
Obtain a reference to the basic profile set.
|
|
|
|
|
|
Create the IOP::IOR info. We will create the info at most once. Get the index of the profile we are using to make the invocation. |
|
This method is intended to be used only by the CORBA::Object class.
|
|
NON-THREAD-SAFE. Utility method which unrolls (removes or pops) the top most forwarding profile list.
|
|
Obtain a pointer to the forwarded profile set.
|
|
|
|
Returns the effective policy if <type> is a known client-exposed policy type. Returns the effective override for all other policy types. |
|
|
|
THREAD-SAFE Create the IOR info.
|
|
All objref representations know how to hash themselves and compare themselves for equivalence to others. It's easily possible to have two objrefs that are distinct copies of data that refers/points to the same remote object (i.e. are equivalent). |
|
Implement the is_equivalent() method for the CORBA::Object.
|
|
Copy of the profile list, user must free memory when done. although the user can call make_profiles() then reorder the list and give it back to TAO_Stub. |
|
NON-THREAD-SAFE. utility method for next_profile.
|
|
THREAD SAFE. If forward_profiles is null then this will get the next profile in the base_profiles list. If forward is not null then this will get the next profile for the list of forwarding profiles. If all profiles have been tried then 0 is returned and profile_in_use_ is set to the first profile in the base_profiles list. |
|
NON-THREAD SAFE version of next_profile (void).
|
|
THREAD SAFE Used to get the next profile after the one being used has failed during the initial connect or send of the message!
|
|
|
|
Accessor.
|
|
returns a pointer to the profile_in_use object. This object retains ownership of this profile.
|
|
Return the Profile lock. This lock can be used at places where profiles need to be edited.
|
|
This method is meant to be used by the CORBA::Object implementation to allow it to directly manipulate the reference count.
|
|
This method is meant to be used by the CORBA::Object implementation to allow it to directly manipulate the reference count.
|
|
|
|
NON-THREAD-SAFE. Utility method which resets or initializes the base_profile list and forward flags.
|
|
NOT THREAD-SAFE. Utility method which pops all forward profile lists and resets the forward_profiles_ pointer.
|
|
THREAD SAFE this method will reset the base profile list to reference the first profile and if there are anmy existing forward profiles they are reset.
|
|
NON-THREAD SAFE version of reset_profiles (void);.
|
|
Accesor and mutator for the servant ORB. Notice that the muatator assumes the ownership of the passed in ORB and the accesor does not return a copy of the orb since the accessing of the ORB is considered temporary. |
|
This returns a duplicated ORB pointer.
|
|
This returns the ORB var itself (generally for temporary use).
|
|
Make a call on to services to see whether they have some preferences on selecting the right profiles.
|
|
|
|
Makes a copy of the profile and frees the existing profile_in_use. NOT THREAD SAFE.
|
|
NON-THREAD-SAFE. Will set profile_success_ to 0.
|
|
|
|
Return the sync strategy to be used in by the transport. Selection will be based on the SyncScope policies.
|
|
Returns 1 if a forward profile has successfully been used. profile_success_ && forward_profiles_.
|
|
Returns TRUE if a connection was successful with at least one profile.
|
|
|
|
Ordered list of profiles for this object.
|
|
The list of forwarding profiles. This is actually implemented as a linked list of TAO_MProfile objects.
|
|
Forwarded IOR info.
|
|
The ior info. This is needed for GIOP 1.2, as the clients could receive an exception from the server asking for this info. The exception that the client receives is LOC_NEEDS_ADDRESSING_MODE. The data is set up here to be passed on to Invocation classes when they receive an exception. This info is for the base profiles that this class stores |
|
|
|
The ORB_Core cannot go away until the object references it creates are destroyed. There are multiple reasons for this, but in particular, the allocators used for some of the TAO_Profile objects contained on each TAO_Stub are owned by the TAO_ORB_Core. This must be the first field of the class, otherwise the TAO_ORB_Core is destroyed too early! |
|
The policy overrides in this object, if nil then use the default policies.
|
|
This is the profile that we are currently sending/receiving with.
|
|
Mutex to protect access to the forwarding profile.
|
|
Have we successfully talked to the forward profile yet?
|
|
Number of outstanding references to this object.
|
|
Mutex to protect reference count.
|
|
If this stub refers to a collocated object then we need to hold on to the servant's ORB (which may be different from the client ORB) so that, 1. we know that the ORB will stay alive long enough, and, 2. we can search for the servant/POA's status starting from the ORB's RootPOA. |
|
All objref representations carry around a type ID.
|