TAO::Profile_Transport_Resolver Class Reference

Chooses the profile and a transport for a target object on which an invocation can be made. More...

#include <Profile_Transport_Resolver.h>

Collaboration diagram for TAO::Profile_Transport_Resolver:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 Profile_Transport_Resolver (CORBA::Object *p, TAO_Stub *stub, bool block=true)
 Constructor.
 ~Profile_Transport_Resolver (void)
void resolve (ACE_Time_Value *val ACE_ENV_ARG_DECL) throw (CORBA::SystemException)
 Method where the bunch of the action takes place.
void transport_released (void) const
bool try_connect (TAO_Transport_Descriptor_Interface *desc, ACE_Time_Value *val ACE_ENV_ARG_DECL)
void init_inconsistent_policies (ACE_ENV_SINGLE_ARG_DECL) throw (CORBA::SystemException)
CORBA::PolicyListinconsistent_policies (void) const
CORBA::PolicyListsteal_inconsistent_policies (void)
void profile (TAO_Profile *pfile)
 Mutator for profile.
TAO_Profileprofile (void) const
 Accessor for profile.
TAO_Stubstub (void) const
 Accessor for TAO_Stub.
CORBA::Objectobject (void) const
 Accessor for the target in use.
TAO_Transporttransport (void) const
 Accessor for the transport reserved for this invocation.
bool blocked (void) const

Private Member Functions

bool get_connection_timeout (ACE_Time_Value &max_wait_time)

Private Attributes

CORBA::Objectobj_
 Target object.
TAO_Stubstub_
 Stub object for the target object.
TAO_Transporttransport_
 The transport selected for this invocation.
TAO_Profileprofile_
 The profile that has been selected for this invocation.
CORBA::PolicyListinconsistent_policies_
 List of inconsistent policies.
bool is_released_
 Has the transport been idle?
bool const blocked_
 Should we block while trying to make a connection.

Detailed Description

Chooses the profile and a transport for a target object on which an invocation can be made.

A target object is represented by multiple profiles, which theoretically provides multiple paths to the same target object. This class helps in choosing the right profile, and pick a transport from cache (or create a new transport if needed) that represents the profile.


Constructor & Destructor Documentation

ACE_INLINE TAO::Profile_Transport_Resolver::Profile_Transport_Resolver CORBA::Object p,
TAO_Stub stub,
bool  block = true
 

Constructor.

With block we tell whether this resolved should always deliver a connection by blocking or unblock before the connection is completely established. Please note that this has *nothing* to do with the synchronous or asynch connect strategy used for making connections. This is a local flag used by the clients of this to dictate some local behavior.

TAO::Profile_Transport_Resolver::~Profile_Transport_Resolver void   ) 
 


Member Function Documentation

ACE_INLINE bool TAO::Profile_Transport_Resolver::blocked void   )  const
 

Accessor to indicate whether we should deliver a connection blocking for completed connections

bool TAO::Profile_Transport_Resolver::get_connection_timeout ACE_Time_Value max_wait_time  )  [private]
 

Helper method to access get the connection timeout from the ORB.

ACE_INLINE CORBA::PolicyList * TAO::Profile_Transport_Resolver::inconsistent_policies void   )  const
 

void TAO::Profile_Transport_Resolver::init_inconsistent_policies ACE_ENV_SINGLE_ARG_DECL   )  throw (CORBA::SystemException)
 

Initialize the inconsistent policy list that this object has cached.

ACE_INLINE CORBA::Object_ptr TAO::Profile_Transport_Resolver::object void   )  const
 

Accessor for the target in use.

ACE_INLINE TAO_Profile * TAO::Profile_Transport_Resolver::profile void   )  const
 

Accessor for profile.

void TAO::Profile_Transport_Resolver::profile TAO_Profile pfile  ) 
 

Mutator for profile.

Accessors and mutators for this class. The following methods are used by the clients of this class to access strategies and other internal workings.

void TAO::Profile_Transport_Resolver::resolve ACE_Time_Value *val  ACE_ENV_ARG_DECL  )  throw (CORBA::SystemException)
 

Method where the bunch of the action takes place.

This is the entry point from the TAO::Invocation_Adapter class. This method accesses the endpoint selector factory from the ORB_Core to decide on the strategy to be used for selecting the profile.

ACE_INLINE CORBA::PolicyList * TAO::Profile_Transport_Resolver::steal_inconsistent_policies void   ) 
 

ACE_INLINE TAO_Stub * TAO::Profile_Transport_Resolver::stub void   )  const
 

Accessor for TAO_Stub.

ACE_INLINE TAO_Transport * TAO::Profile_Transport_Resolver::transport void   )  const
 

Accessor for the transport reserved for this invocation.

ACE_INLINE void TAO::Profile_Transport_Resolver::transport_released void   )  const
 

Signal to let the resolver know that the transport has been released back to the cache.

bool TAO::Profile_Transport_Resolver::try_connect TAO_Transport_Descriptor_Interface desc,
ACE_Time_Value *val  ACE_ENV_ARG_DECL
 

This is a callback method used by the endpoint selectors, to delegate the responsibility of reserving a transport from the connection cache for this invocation.


Member Data Documentation

bool const TAO::Profile_Transport_Resolver::blocked_ [private]
 

Should we block while trying to make a connection.

CORBA::PolicyList* TAO::Profile_Transport_Resolver::inconsistent_policies_ [private]
 

List of inconsistent policies.

If current effective policies cause the invocation to raise CORBA::INV_POLICY exception, the conflicting/problematic policies are stored in this list. This is used by

Parameters:
Object::_validate_connection method to inform clients about causes of invocation failure.
Conflicting policies are only stored in this list if
Parameters:
init_inconsistent_policies method has been called prior to the beginning of invocation. This saves extra work of conflicting policies 'logging' when it's not needed.
Note:
We don't use _var with a reason. Using _var would involve including the header file for at least Policy_ForwardC.h, and that is what we precisely want to avoid.

bool TAO::Profile_Transport_Resolver::is_released_ [mutable, private]
 

Has the transport been idle?

CORBA::Object* TAO::Profile_Transport_Resolver::obj_ [mutable, private]
 

Target object.

TAO_Profile* TAO::Profile_Transport_Resolver::profile_ [private]
 

The profile that has been selected for this invocation.

TAO_Stub* TAO::Profile_Transport_Resolver::stub_ [private]
 

Stub object for the target object.

TAO_Transport* TAO::Profile_Transport_Resolver::transport_ [private]
 

The transport selected for this invocation.


The documentation for this class was generated from the following files:
Generated on Wed Nov 23 16:05:23 2005 for TAO by  doxygen 1.4.5