TAO  2.2.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Static Public Member Functions | Protected Attributes | Private Attributes | List of all members
TAO_Reply_Dispatcher Class Referenceabstract

#include <Reply_Dispatcher.h>

Inheritance diagram for TAO_Reply_Dispatcher:
Inheritance graph
Collaboration diagram for TAO_Reply_Dispatcher:
Collaboration graph

Public Member Functions

 TAO_Reply_Dispatcher (ACE_Allocator *allocator=0)
 Constructor. More...
 
virtual ~TAO_Reply_Dispatcher (void)
 Destructor. More...
 
virtual int dispatch_reply (TAO_Pluggable_Reply_Params &params)=0
 
virtual void reply_timed_out (void)=0
 Inform that the reply timed out. More...
 
virtual void connection_closed (void)=0
 
GIOP::LocateStatusType locate_reply_status (void) const
 Get the locate reply status. More...
 
GIOP::ReplyStatusType reply_status (void) const
 

Static Public Member Functions

static void intrusive_add_ref (TAO_Reply_Dispatcher *)
 
static void intrusive_remove_ref (TAO_Reply_Dispatcher *)
 

Protected Attributes

GIOP::LocateStatusType locate_reply_status_
 LocateReply status. More...
 
GIOP::ReplyStatusType reply_status_
 

Private Attributes

ACE_Atomic_Op< TAO_SYNCH_MUTEX,
long > 
refcnt_
 Support for intrusive reference counting. More...
 
ACE_Allocatorallocator_
 

Detailed Description

Different invocation modes process the Reply messages in different ways. Traditional synchronous replies simply receive the message and wake up the waiting thread (if any). Asynchronous Method Invocation (Callbacks) must process the message in the thread that receives it. Deferred Synchronous (DII) and AMI in the Poller mode save the reply for later processing in the application. The lower level components in the ORB only deal with this abstract interface, when the invocation is made the right type of Reply Dispatcher is instantiated and registered with the Transport object.

Constructor & Destructor Documentation

TAO_Reply_Dispatcher::TAO_Reply_Dispatcher ( ACE_Allocator allocator = 0)

Constructor.

TAO_Reply_Dispatcher::~TAO_Reply_Dispatcher ( void  )
virtual

Destructor.

Member Function Documentation

virtual void TAO_Reply_Dispatcher::connection_closed ( void  )
pure virtual

The used for the pending reply has been closed. No reply is expected.

Todo:
If the connection was closed due to a CloseConnection message then we could re-issue the request instead of raising the exception, it would a matter of simply adding a boolean argument to this function.

Implemented in TAO_Synch_Reply_Dispatcher.

virtual int TAO_Reply_Dispatcher::dispatch_reply ( TAO_Pluggable_Reply_Params params)
pure virtual

Dispatch the reply. Return 1 on sucess, -1 on error.

Todo:
Pluggable Messaging: this method has too many arguments, the "Right Thing"[tm] is for the Transport Object to create a "ClientReply" that encapsulates all we need to process a reply. Naturally it is possible that different messaging protocols implement different variants of such ClientReply class.

Implemented in TAO_Synch_Reply_Dispatcher.

void TAO_Reply_Dispatcher::intrusive_add_ref ( TAO_Reply_Dispatcher rd)
static
void TAO_Reply_Dispatcher::intrusive_remove_ref ( TAO_Reply_Dispatcher rd)
static
GIOP::LocateStatusType TAO_Reply_Dispatcher::locate_reply_status ( void  ) const

Get the locate reply status.

GIOP::ReplyStatusType TAO_Reply_Dispatcher::reply_status ( void  ) const
virtual void TAO_Reply_Dispatcher::reply_timed_out ( void  )
pure virtual

Inform that the reply timed out.

Implemented in TAO_Synch_Reply_Dispatcher.

Member Data Documentation

ACE_Allocator* TAO_Reply_Dispatcher::allocator_
private

Allocator that was used to allocate this reply dispatcher. In case of zero we come from the heap.

GIOP::LocateStatusType TAO_Reply_Dispatcher::locate_reply_status_
protected

LocateReply status.

ACE_Atomic_Op<TAO_SYNCH_MUTEX, long> TAO_Reply_Dispatcher::refcnt_
private

Support for intrusive reference counting.

GIOP::ReplyStatusType TAO_Reply_Dispatcher::reply_status_
protected

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