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

TAO_Stub Class Reference

TAO_Stub. More...

#include <Stub.h>

Collaboration diagram for TAO_Stub:

Collaboration graph
[legend]
List of all members.

Public Methods

virtual CORBA::Policy_ptr get_policy (CORBA::PolicyType type, CORBA::Environment &ACE_TRY_ENV = TAO_default_environment () )
virtual CORBA::Policy_ptr get_client_policy (CORBA::PolicyType type, CORBA::Environment &ACE_TRY_ENV = TAO_default_environment () )
virtual TAO_Stub* set_policy_overrides (const CORBA::PolicyList & policies, CORBA::SetOverrideType set_add, CORBA::Environment &ACE_TRY_ENV = TAO_default_environment ())
virtual CORBA::PolicyListget_policy_overrides (const CORBA::PolicyTypeSeq & types, CORBA::Environment &ACE_TRY_ENV = TAO_default_environment ())
CORBA::Boolean validate_connection (CORBA::PolicyList_out inconsistent_policies, CORBA::Environment &ACE_TRY_ENV = TAO_default_environment ())
CORBA::Policyrelative_roundtrip_timeout (void)
CORBA::Policysync_scope (void)
CORBA::Policybuffering_constraint (void)
TAO_Sync_Strategysync_strategy (void)
 Return the sync strategy to be used in by the transport. Selection will be based on the SyncScope policies.

CORBA::ULong hash (CORBA::ULong maximum, CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ())
CORBA::Boolean is_equivalent (CORBA::Object_ptr other_obj)
 Implement the is_equivalent() method for the CORBA::Object.

 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.

CORBA::ULong _incr_refcnt (void)
CORBA::ULong _decr_refcnt (void)
ACE_Lockprofile_lock (void) const
 Return the Profile lock. This lock can be used at places where profiles need to be edited.

TAO_Profileprofile_in_use (void)
 returns a pointer to the profile_in_use object. This object retains ownership of this profile.

TAO_MProfilemake_profiles (void)
const TAO_MProfilebase_profiles (void) const
 Obtain a reference to the basic profile set.

TAO_MProfilebase_profiles (void)
 Obtain a reference to the basic profile set.

const TAO_MProfileforward_profiles (void) const
 Obtain a pointer to the forwarded profile set.

TAO_Profilenext_profile (void)
TAO_Profilenext_profile_i (void)
 NON-THREAD SAFE version of next_profile (void).

void reset_profiles (void)
void reset_profiles_i (void)
 NON-THREAD SAFE version of reset_profiles (void);.

CORBA::Boolean valid_forward_profile (void)
 Returns 1 if a forward profile has successfully been used. profile_success_ && forward_profiles_.

void set_valid_profile (void)
 NON-THREAD-SAFE. Will set profile_success_ to 0.

CORBA::Boolean valid_profile (void)
 Returns TRUE if a connection was successful with at least one profile.

TAO_Profilebase_profiles (const TAO_MProfile& mprofiles)
 Initialize the base_profiles_ and set profile_in_use_ to reference the first profile.

void add_forward_profiles (const TAO_MProfile &mprofiles)
CORBA::Boolean next_profile_retry (void)
TAO_ORB_Coreorb_core (void) const
 Accessor.

CORBA::ORB_ptr servant_orb_ptr (void)
 This returns a duplicated ORB pointer.

CORBA::ORB_var& servant_orb_var (void)
 This returns the ORB var itself (generally for temporary use).

void servant_orb (CORBA::ORB_ptr orb)
void addressing_mode (CORBA::Short addr_mode)
 Set the addressing mode.

CORBA::Short addressing_mode (void)
 Return the Addressing mode.

CORBA::Boolean service_profile_selection (void)
 Make a call on to services to see whether they have some preferences on selecting the right profiles.

int create_ior_info (IOP::IOR *&ior_info, CORBA::ULong &index, CORBA::Environment &ACE_TRY_ENV) throw (CORBA::SystemException)

Public Attributes

CORBA::String_var type_id
 All objref representations carry around a type ID.


Protected Methods

virtual ~TAO_Stub (void)
 Destructor is to be called only through _decr_refcnt().

 TAO_Stub (const TAO_Stub &)
TAO_Stub& operator= (const TAO_Stub &)

Protected Attributes

TAO_ORB_Core_Auto_Ptr orb_core_
 Automatically manage the ORB_Core reference count. More...

CORBA::ORB_var orb_
 ORB required for reference counting. This will help us keep the ORB around until the CORBA::Object we represent dies. More...

CORBA::ORB_var servant_orb_
TAO_MProfile base_profiles_
 Ordered list of profiles for this object.

TAO_MProfileforward_profiles_
 The list of forwarding profiles. This is actually implemented as a linked list of TAO_MProfile objects.

TAO_Profileprofile_in_use_
 This is the profile that we are currently sending/receiving with.

ACE_Lockprofile_lock_ptr_
 Mutex to protect access to the forwarding profile.

size_t profile_success_
 Have we successfully talked to the forward profile yet?

TAO_SYNCH_MUTEX refcount_lock_
 Mutex to protect reference count.

CORBA::ULong refcount_
 Number of outstanding references to this object.

TAO_Policy_Setpolicies_
 The policy overrides in this object, if nil then use the default policies.

CORBA::Short addressing_mode_
 The addressing mode.

IOP::IORior_info_
IOP::IORforwarded_ior_info_
 Forwarded IOR info.


Private Methods

TAO_Profileset_profile_in_use_i (TAO_Profile *pfile)
 Makes a copy of the profile and frees the existing profile_in_use. NOT THREAD SAFE.

void reset_base ()
 NON-THREAD-SAFE. Utility method which resets or initializes the base_profile list and forward flags.

void forward_back_one (void)
 NON-THREAD-SAFE. Utility method which unrolls (removes or pops) the top most forwarding profile list.

void reset_forward ()
 NOT THREAD-SAFE. Utility method which pops all forward profile lists and resets the forward_profiles_ pointer.

TAO_Profilenext_forward_profile (void)
 NON-THREAD-SAFE. utility method for next_profile.

int get_profile_ior_info (TAO_MProfile &profile, IOP::IOR *&ior_info, CORBA::Environment &ACE_TRY_ENV) throw (CORBA::SystemException)
 THREAD-SAFE Create the IOR info.


Detailed Description

TAO_Stub.

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.


Constructor & Destructor Documentation

TAO_Stub::TAO_Stub ( const char * repository_id,
const TAO_MProfile & profiles,
TAO_ORB_Core * orb_core ) [inline]
 

Construct from a repository ID and a list of profiles.

TAO_Stub::~TAO_Stub ( void ) [protected, virtual]
 

Destructor is to be called only through _decr_refcnt().

TAO_Stub::TAO_Stub ( const TAO_Stub & ) [protected]
 


Member Function Documentation

CORBA::ULong TAO_Stub::_decr_refcnt ( void )
 

CORBA::ULong TAO_Stub::_incr_refcnt ( void )
 

void TAO_Stub::add_forward_profiles ( const TAO_MProfile & mprofiles )
 

THREAD SAFE. Set the forward_profiles. This object will assume ownership of this TAO_MProfile object!!

ACE_INLINE CORBA::Short TAO_Stub::addressing_mode ( void )
 

Return the Addressing mode.

ACE_INLINE void TAO_Stub::addressing_mode ( CORBA::Short addr )
 

Set the addressing mode.

ACE_INLINE TAO_Profile * TAO_Stub::base_profiles ( const TAO_MProfile & mprofiles )
 

Initialize the base_profiles_ and set profile_in_use_ to reference the first profile.

ACE_INLINE TAO_MProfile & TAO_Stub::base_profiles ( void )
 

Obtain a reference to the basic profile set.

ACE_INLINE const TAO_MProfile & TAO_Stub::base_profiles ( void ) const
 

Obtain a reference to the basic profile set.

CORBA::Policy* TAO_Stub::buffering_constraint ( void )
 

int TAO_Stub::create_ior_info ( IOP::IOR *& ior_info,
CORBA::ULong & index,
CORBA::Environment & ACE_TRY_ENV ) throw (CORBA::SystemException)
 

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.

ACE_INLINE void TAO_Stub::forward_back_one ( void ) [private]
 

NON-THREAD-SAFE. Utility method which unrolls (removes or pops) the top most forwarding profile list.

ACE_INLINE const TAO_MProfile * TAO_Stub::forward_profiles ( void ) const
 

Obtain a pointer to the forwarded profile set.

virtual CORBA::Policy_ptr TAO_Stub::get_client_policy ( CORBA::PolicyType type,
CORBA::Environment & ACE_TRY_ENV = TAO_default_environment () ) [virtual]
 

CORBA::Policy_ptr TAO_Stub::get_policy ( CORBA::PolicyType type,
CORBA::Environment & ACE_TRY_ENV = TAO_default_environment () ) [virtual]
 

Returns the effective policy if <type> is a known client-exposed policy type. Returns the effective override for all other policy types.

virtual CORBA::PolicyList* TAO_Stub::get_policy_overrides ( const CORBA::PolicyTypeSeq & types,
CORBA::Environment & ACE_TRY_ENV = TAO_default_environment () ) [virtual]
 

int TAO_Stub::get_profile_ior_info ( TAO_MProfile & profile,
IOP::IOR *& ior_info,
CORBA::Environment & ACE_TRY_ENV ) throw (CORBA::SystemException) [private]
 

THREAD-SAFE Create the IOR info.

CORBA::ULong TAO_Stub::hash ( CORBA::ULong maximum,
CORBA_Environment & ACE_TRY_ENV = TAO_default_environment () )
 

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).

CORBA::Boolean TAO_Stub::is_equivalent ( CORBA::Object_ptr other_obj )
 

Implement the is_equivalent() method for the CORBA::Object.

ACE_INLINE TAO_MProfile * TAO_Stub::make_profiles ( void )
 

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.

ACE_INLINE TAO_Profile * TAO_Stub::next_forward_profile ( void ) [private]
 

NON-THREAD-SAFE. utility method for next_profile.

ACE_INLINE TAO_Profile * TAO_Stub::next_profile ( void )
 

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.

ACE_INLINE TAO_Profile * TAO_Stub::next_profile_i ( void )
 

NON-THREAD SAFE version of next_profile (void).

ACE_INLINE CORBA::Boolean TAO_Stub::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!

TAO_Stub& TAO_Stub::operator= ( const TAO_Stub & ) [protected]
 

ACE_INLINE TAO_ORB_Core * TAO_Stub::orb_core ( void ) const
 

Accessor.

ACE_INLINE TAO_Profile * TAO_Stub::profile_in_use ( void )
 

returns a pointer to the profile_in_use object. This object retains ownership of this profile.

ACE_INLINE ACE_Lock * TAO_Stub::profile_lock ( void ) const
 

Return the Profile lock. This lock can be used at places where profiles need to be edited.

CORBA::Policy* TAO_Stub::relative_roundtrip_timeout ( void )
 

ACE_INLINE void TAO_Stub::reset_base ( void ) [private]
 

NON-THREAD-SAFE. Utility method which resets or initializes the base_profile list and forward flags.

ACE_INLINE void TAO_Stub::reset_forward ( void ) [private]
 

NOT THREAD-SAFE. Utility method which pops all forward profile lists and resets the forward_profiles_ pointer.

ACE_INLINE void TAO_Stub::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.

ACE_INLINE void TAO_Stub::reset_profiles_i ( void )
 

NON-THREAD SAFE version of reset_profiles (void);.

ACE_INLINE void TAO_Stub::servant_orb ( CORBA::ORB_ptr orb )
 

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.

ACE_INLINE CORBA::ORB_ptr TAO_Stub::servant_orb_ptr ( void )
 

This returns a duplicated ORB pointer.

ACE_INLINE CORBA::ORB_var & TAO_Stub::servant_orb_var ( void )
 

This returns the ORB var itself (generally for temporary use).

ACE_INLINE CORBA::Boolean TAO_Stub::service_profile_selection ( void )
 

Make a call on to services to see whether they have some preferences on selecting the right profiles.

virtual TAO_Stub* TAO_Stub::set_policy_overrides ( const CORBA::PolicyList & policies,
CORBA::SetOverrideType set_add,
CORBA::Environment & ACE_TRY_ENV = TAO_default_environment () ) [virtual]
 

ACE_INLINE TAO_Profile * TAO_Stub::set_profile_in_use_i ( TAO_Profile * pfile ) [private]
 

Makes a copy of the profile and frees the existing profile_in_use. NOT THREAD SAFE.

ACE_INLINE void TAO_Stub::set_valid_profile ( void )
 

NON-THREAD-SAFE. Will set profile_success_ to 0.

CORBA::Policy* TAO_Stub::sync_scope ( void )
 

TAO_Sync_Strategy & TAO_Stub::sync_strategy ( void )
 

Return the sync strategy to be used in by the transport. Selection will be based on the SyncScope policies.

ACE_INLINE CORBA::Boolean TAO_Stub::valid_forward_profile ( void )
 

Returns 1 if a forward profile has successfully been used. profile_success_ && forward_profiles_.

ACE_INLINE CORBA::Boolean TAO_Stub::valid_profile ( void )
 

Returns TRUE if a connection was successful with at least one profile.

CORBA::Boolean TAO_Stub::validate_connection ( CORBA::PolicyList_out inconsistent_policies,
CORBA::Environment & ACE_TRY_ENV = TAO_default_environment () )
 


Member Data Documentation

CORBA::Short TAO_Stub::addressing_mode_ [protected]
 

The addressing mode.

TAO_MProfile TAO_Stub::base_profiles_ [protected]
 

Ordered list of profiles for this object.

TAO_MProfile * TAO_Stub::forward_profiles_ [protected]
 

The list of forwarding profiles. This is actually implemented as a linked list of TAO_MProfile objects.

IOP::IOR * TAO_Stub::forwarded_ior_info_ [protected]
 

Forwarded IOR info.

IOP::IOR * TAO_Stub::ior_info_ [protected]
 

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

CORBA::ORB_var TAO_Stub::orb_ [protected]
 

ORB required for reference counting. This will help us keep the ORB around until the CORBA::Object we represent dies.

Todo:
Why do we need both a reference to the ORB_Core and its ORB? It think the memory management rules for the ORB_Core changed, in the good old days it was the CORBA::ORB class who owned the ORB_Core, now it is the other way around....

TAO_ORB_Core_Auto_Ptr TAO_Stub::orb_core_ [protected]
 

Automatically manage the ORB_Core reference count.

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!

TAO_Policy_Set * TAO_Stub::policies_ [protected]
 

The policy overrides in this object, if nil then use the default policies.

TAO_Profile * TAO_Stub::profile_in_use_ [protected]
 

This is the profile that we are currently sending/receiving with.

ACE_Lock * TAO_Stub::profile_lock_ptr_ [protected]
 

Mutex to protect access to the forwarding profile.

size_t TAO_Stub::profile_success_ [protected]
 

Have we successfully talked to the forward profile yet?

CORBA::ULong TAO_Stub::refcount_ [protected]
 

Number of outstanding references to this object.

TAO_SYNCH_MUTEX TAO_Stub::refcount_lock_ [protected]
 

Mutex to protect reference count.

CORBA::ORB_var TAO_Stub::servant_orb_ [protected]
 

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.

CORBA::String_var TAO_Stub::type_id
 

All objref representations carry around a type ID.


The documentation for this class was generated from the following files:
Generated at Sat Dec 1 12:08:56 2001 for TAO by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000