TAO  2.3.3
Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
TAO_Muxed_TMS Class Reference

#include <Muxed_TMS.h>

Inheritance diagram for TAO_Muxed_TMS:
Inheritance graph
[legend]
Collaboration diagram for TAO_Muxed_TMS:
Collaboration graph
[legend]

Public Member Functions

 TAO_Muxed_TMS (TAO_Transport *transport)
 Constructor. More...
 
virtual ~TAO_Muxed_TMS (void)
 Destructor. More...
 
virtual CORBA::ULong request_id (void)
 
virtual int bind_dispatcher (CORBA::ULong request_id, ACE_Intrusive_Auto_Ptr< TAO_Reply_Dispatcher > rd)
 Bind the dispatcher with the request id. More...
 
virtual int unbind_dispatcher (CORBA::ULong request_id)
 
virtual int dispatch_reply (TAO_Pluggable_Reply_Params &params)
 
virtual int reply_timed_out (CORBA::ULong request_id)
 
virtual bool idle_after_send (void)
 
virtual bool idle_after_reply (void)
 
virtual void connection_closed (void)
 
virtual bool has_request (void)
 Do we have a request pending. More...
 
- Public Member Functions inherited from TAO_Transport_Mux_Strategy
 TAO_Transport_Mux_Strategy (TAO_Transport *transport)
 Base class constructor. More...
 
virtual ~TAO_Transport_Mux_Strategy (void)
 Base class destructor. More...
 

Private Types

typedef ACE_Hash_Map_Manager_Ex< CORBA::ULong, ACE_Intrusive_Auto_Ptr< TAO_Reply_Dispatcher >, ACE_Hash< CORBA::ULong >, ACE_Equal_To< CORBA::ULong >, ACE_Null_MutexREQUEST_DISPATCHER_TABLE
 

Private Member Functions

void operator= (const TAO_Muxed_TMS &)
 
 TAO_Muxed_TMS (const TAO_Muxed_TMS &)
 
int clear_cache_i (void)
 

Private Attributes

ACE_Locklock_
 Lock to protect the state of the object. More...
 
CORBA::ULong request_id_generator_
 
TAO_ORB_Core *const orb_core_
 
REQUEST_DISPATCHER_TABLE dispatcher_table_
 Table of <Request ID, Reply Dispatcher> pairs. More...
 

Additional Inherited Members

- Protected Attributes inherited from TAO_Transport_Mux_Strategy
TAO_Transporttransport_
 Cache the transport reference. More...
 

Detailed Description

Using this strategy a single connection can have multiple outstanding requests. @ Can the performance of the demuxer be made more predictable, for example, using the request id as an active demux key?

Note
Check the OMG resolutions about bidirectional connections, it is possible that the request ids can only assume even or odd values.

Member Typedef Documentation

Constructor & Destructor Documentation

TAO_Muxed_TMS::TAO_Muxed_TMS ( TAO_Transport transport)

Constructor.

TAO_Muxed_TMS::~TAO_Muxed_TMS ( void  )
virtual

Destructor.

TAO_Muxed_TMS::TAO_Muxed_TMS ( const TAO_Muxed_TMS )
private

Member Function Documentation

int TAO_Muxed_TMS::bind_dispatcher ( CORBA::ULong  request_id,
ACE_Intrusive_Auto_Ptr< TAO_Reply_Dispatcher rd 
)
virtual

Bind the dispatcher with the request id.

Implements TAO_Transport_Mux_Strategy.

int TAO_Muxed_TMS::clear_cache_i ( void  )
private
void TAO_Muxed_TMS::connection_closed ( void  )
virtual

The transport object has closed the connection, inform all Reply dispatchers and waiting strategies.

Implements TAO_Transport_Mux_Strategy.

int TAO_Muxed_TMS::dispatch_reply ( TAO_Pluggable_Reply_Params params)
virtual

Dispatch the reply for request_id, cleanup any resources allocated for that request.

Implements TAO_Transport_Mux_Strategy.

bool TAO_Muxed_TMS::has_request ( void  )
virtual

Do we have a request pending.

Implements TAO_Transport_Mux_Strategy.

bool TAO_Muxed_TMS::idle_after_reply ( void  )
virtual

Request is sent and the reply is received. Idle the transport now. The return value indicates whether idling was successful or not.

Implements TAO_Transport_Mux_Strategy.

bool TAO_Muxed_TMS::idle_after_send ( void  )
virtual

Request has been just sent, but the reply is not received. Idle the transport now. The return value indicates whether idling was successful or not.

Implements TAO_Transport_Mux_Strategy.

void TAO_Muxed_TMS::operator= ( const TAO_Muxed_TMS )
private
int TAO_Muxed_TMS::reply_timed_out ( CORBA::ULong  request_id)
virtual

Dispatch a reply timeout for request request_id

Implements TAO_Transport_Mux_Strategy.

CORBA::ULong TAO_Muxed_TMS::request_id ( void  )
virtual

Generate and return an unique request id for the current invocation.

Implements TAO_Transport_Mux_Strategy.

int TAO_Muxed_TMS::unbind_dispatcher ( CORBA::ULong  request_id)
virtual

Unbind the dispatcher, the client is no longer waiting for the request, for example, because the request timed out. The strategy can (must) cleanup any resources associated with the request. A later reply for that request should be ignored.

Implements TAO_Transport_Mux_Strategy.

Member Data Documentation

REQUEST_DISPATCHER_TABLE TAO_Muxed_TMS::dispatcher_table_
private

Table of <Request ID, Reply Dispatcher> pairs.

ACE_Lock* TAO_Muxed_TMS::lock_
private

Lock to protect the state of the object.

TAO_ORB_Core* const TAO_Muxed_TMS::orb_core_
private

Keep track of the orb core pointer. We need to this to create the Reply Dispatchers.

CORBA::ULong TAO_Muxed_TMS::request_id_generator_
private

Used to generate a different request_id on each call to request_id().


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