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

# TAO_Muxed_TMS Class Reference

Using this strategy a single connection can have multiple outstanding requests. More...

`#include <Muxed_TMS.h>`

Inheritance diagram for TAO_Muxed_TMS:

[legend]
Collaboration diagram for TAO_Muxed_TMS:

[legend]
List of all members.

## Public Methods
| TAO_Muxed_TMS (TAO_Transport *transport)
| Constructor. More...
virtual | ~TAO_Muxed_TMS (void)
| Destructor. More...
virtual CORBA::ULong | request_id (void)
| Generate and return an unique request id for the current invocation. More...
virtual int | bind_dispatcher (CORBA::ULong request_id, TAO_Reply_Dispatcher *rh)
| Bind the dispatcher with the request id. Commonalities in the derived class implementations is kept here. More...
virtual void | unbind_dispatcher (CORBA::ULong request_id)
| Unbind the dispatcher, the client is no longer waiting for the request, for example, because the request timedout. More...
virtual int | dispatch_reply (TAO_Pluggable_Reply_Params &params)
| Dispatch the reply for <request_id>, cleanup any resources allocated for that request. More...
virtual int | idle_after_send (void)
| Request has been just sent, but the reply is not received. Idle the transport now. More...
virtual int | idle_after_reply (void)
| Request is sent and the reply is received. Idle the transport now. More...
virtual void | connection_closed (void)
| The transport object has closed the connection, inform all Reply dispatchers and waiting strategies. More...
## Protected Types
typedef ACE_Hash_Map_Manager_Ex< CORBA::ULong, TAO_Reply_Dispatcher *, ACE_Hash< CORBA::ULong >, ACE_Equal_To< CORBA::ULong >, ACE_Null_Mutex > | REQUEST_DISPATCHER_TABLE
## Protected Attributes
TAO_SYNCH_MUTEX | lock_
| Lock to protect the state of this class. More...
CORBA::ULong | request_id_generator_
| Used to generate a different request_id on each call to request_id(). More...
REQUEST_DISPATCHER_TABLE | dispatcher_table_
| Table of <Request ID, Reply Dispatcher> pairs. More...
TAO_ORB_Core * | orb_core_
| Keep track of the orb core pointer. We need to this to create the Reply Dispatchers. 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

typedef ACE_Hash_Map_Manager_Ex<CORBA::ULong, TAO_Reply_Dispatcher *, ACE_Hash <CORBA::ULong>, ACE_Equal_To <CORBA::ULong>, ACE_Null_Mutex> TAO_Muxed_TMS::REQUEST_DISPATCHER_TABLE`[protected]`

## Constructor & Destructor Documentation

TAO_Muxed_TMS::TAO_Muxed_TMS | ( | TAO_Transport * | transport | ) |

| Constructor.

TAO_Muxed_TMS::~TAO_Muxed_TMS | ( | void |  | ) | `[virtual]`

| Destructor.

## Member Function Documentation

int TAO_Muxed_TMS::bind_dispatcher | ( | CORBA::ULong | request_id,
|  | TAO_Reply_Dispatcher * | rd
| ) | `[virtual]`

| Bind the dispatcher with the request id. Commonalities in the derived class implementations is kept here. Reimplemented from TAO_Transport_Mux_Strategy.

void TAO_Muxed_TMS::connection_closed | ( | void |  | ) | `[virtual]`

| The transport object has closed the connection, inform all Reply dispatchers and waiting strategies. Reimplemented from 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. Reimplemented from TAO_Transport_Mux_Strategy.

int TAO_Muxed_TMS::idle_after_reply | ( | void |  | ) | `[virtual]`

| Request is sent and the reply is received. Idle the transport now. Reimplemented from TAO_Transport_Mux_Strategy.

int TAO_Muxed_TMS::idle_after_send | ( | void |  | ) | `[virtual]`

| Request has been just sent, but the reply is not received. Idle the transport now. Reimplemented from TAO_Transport_Mux_Strategy.

CORBA::ULong TAO_Muxed_TMS::request_id | ( | void |  | ) | `[virtual]`

| Generate and return an unique request id for the current invocation. Reimplemented from TAO_Transport_Mux_Strategy.

void 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. Reimplemented from TAO_Transport_Mux_Strategy.

## Member Data Documentation

REQUEST_DISPATCHER_TABLE TAO_Muxed_TMS::dispatcher_table_`[protected]`

| Table of <Request ID, Reply Dispatcher> pairs.

TAO_SYNCH_MUTEX TAO_Muxed_TMS::lock_`[protected]`

| Lock to protect the state of this class.

TAO_ORB_Core* TAO_Muxed_TMS::orb_core_`[protected]`

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

CORBA::ULong TAO_Muxed_TMS::request_id_generator_`[protected]`

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

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

- Muxed_TMS.h
- Muxed_TMS.cpp