Public Member Functions | Private Types | Private Member Functions | Private Attributes

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]

List of all members.

Public Member Functions

 TAO_Muxed_TMS (TAO_Transport *transport)
 Constructor.
virtual ~TAO_Muxed_TMS (void)
 Destructor.
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.
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.

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_Mutex
REQUEST_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.
CORBA::ULong request_id_generator_
TAO_ORB_Core *const orb_core_
REQUEST_DISPATCHER_TABLE dispatcher_table_
 Table of <Request ID, Reply Dispatcher> pairs.

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

Table of <Request ID, Reply Dispatcher> pairs.

Lock to protect the state of the object.

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

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


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines