TAO 3.1.4
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
TAO_Asynch_Reply_Dispatcher_Base Class Referenceabstract

Base class for TAO_Asynch_Reply_Dispatcher and TAO_DII_Deferred_Reply_Dispatcher. More...

#include <Asynch_Reply_Dispatcher_Base.h>

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

Public Member Functions

 TAO_Asynch_Reply_Dispatcher_Base (TAO_ORB_Core *orb_core, ACE_Allocator *allocator=0)
 Default constructor.
 
void transport (TAO_Transport *t)
 Sets the transport for this invocation.
 
virtual long schedule_timer (CORBA::ULong, const ACE_Time_Value &)=0
 Install the timeout handler.
 
bool try_dispatch_reply ()
 A helper method that can be used by the subclasses.
 
- Public Member Functions inherited from TAO_Reply_Dispatcher
 TAO_Reply_Dispatcher (ACE_Allocator *allocator=0)
 Constructor.
 
virtual ~TAO_Reply_Dispatcher ()
 Destructor.
 
virtual int dispatch_reply (TAO_Pluggable_Reply_Params &params)=0
 
virtual void reply_timed_out ()=0
 Inform that the reply timed out.
 
virtual void connection_closed ()=0
 
GIOP::LocateStatusType locate_reply_status () const
 Get the locate reply status.
 
GIOP::ReplyStatusType reply_status () const
 

Protected Member Functions

virtual ~TAO_Asynch_Reply_Dispatcher_Base ()
 Destructor.
 

Protected Attributes

IOP::ServiceContextList reply_service_info_
 The service context list.
 
char buf_ [ACE_CDR::DEFAULT_BUFSIZE]
 The buffer that is used to initialise the data block.
 
ACE_Data_Block db_
 
TAO_InputCDR reply_cdr_
 
TAO_Transporttransport_
 This invocation is using this transport, may change...
 
- Protected Attributes inherited from TAO_Reply_Dispatcher
GIOP::LocateStatusType locate_reply_status_
 LocateReply status.
 
GIOP::ReplyStatusType reply_status_
 

Private Member Functions

void operator= (const TAO_Asynch_Reply_Dispatcher_Base &)
 
 TAO_Asynch_Reply_Dispatcher_Base (const TAO_Asynch_Reply_Dispatcher_Base &)
 

Private Attributes

ACE_Locklock_
 Lock to protect is_reply_dispatched_ flag.
 
bool is_reply_dispatched_
 Has the reply been dispatched?
 

Additional Inherited Members

- Static Public Member Functions inherited from TAO_Reply_Dispatcher
static void intrusive_add_ref (TAO_Reply_Dispatcher *)
 
static void intrusive_remove_ref (TAO_Reply_Dispatcher *)
 

Detailed Description

Base class for TAO_Asynch_Reply_Dispatcher and TAO_DII_Deferred_Reply_Dispatcher.

Constructor & Destructor Documentation

◆ TAO_Asynch_Reply_Dispatcher_Base() [1/2]

TAO_Asynch_Reply_Dispatcher_Base::TAO_Asynch_Reply_Dispatcher_Base ( TAO_ORB_Core * orb_core,
ACE_Allocator * allocator = 0 )

Default constructor.

◆ ~TAO_Asynch_Reply_Dispatcher_Base()

TAO_Asynch_Reply_Dispatcher_Base::~TAO_Asynch_Reply_Dispatcher_Base ( )
protectedvirtual

Destructor.

◆ TAO_Asynch_Reply_Dispatcher_Base() [2/2]

TAO_Asynch_Reply_Dispatcher_Base::TAO_Asynch_Reply_Dispatcher_Base ( const TAO_Asynch_Reply_Dispatcher_Base & )
private

Member Function Documentation

◆ operator=()

void TAO_Asynch_Reply_Dispatcher_Base::operator= ( const TAO_Asynch_Reply_Dispatcher_Base & )
private

◆ schedule_timer()

virtual long TAO_Asynch_Reply_Dispatcher_Base::schedule_timer ( CORBA::ULong ,
const ACE_Time_Value &  )
pure virtual

Install the timeout handler.

◆ transport()

void TAO_Asynch_Reply_Dispatcher_Base::transport ( TAO_Transport * t)

Sets the transport for this invocation.

◆ try_dispatch_reply()

bool TAO_Asynch_Reply_Dispatcher_Base::try_dispatch_reply ( )

A helper method that can be used by the subclasses.

The semantics of this helper method needs careful attention. A call to this method will do the following

  • If the reply has already been dispatched, the return value will be false to signify not to try.
  • If the reply has not been dispatched, this method will set the flag to be true and return a true value to signify that the caller thread can go ahead and dispatch reply.

Why are we clumping everything in one method. Answer is we need atomicity?

Member Data Documentation

◆ buf_

char TAO_Asynch_Reply_Dispatcher_Base::buf_[ACE_CDR::DEFAULT_BUFSIZE]
protected

The buffer that is used to initialise the data block.

◆ db_

ACE_Data_Block TAO_Asynch_Reply_Dispatcher_Base::db_
protected

Datablock that is created on the stack to initialise the CDR stream underneath.

◆ is_reply_dispatched_

bool TAO_Asynch_Reply_Dispatcher_Base::is_reply_dispatched_
private

Has the reply been dispatched?

◆ lock_

ACE_Lock* TAO_Asynch_Reply_Dispatcher_Base::lock_
private

Lock to protect is_reply_dispatched_ flag.

◆ reply_cdr_

TAO_InputCDR TAO_Asynch_Reply_Dispatcher_Base::reply_cdr_
protected

CDR stream which has the reply information that needs to be demarshalled by the stubs

◆ reply_service_info_

IOP::ServiceContextList TAO_Asynch_Reply_Dispatcher_Base::reply_service_info_
protected

The service context list.

Note, that this is not a reference as in the synchronous case. We own the reply_service_info because our TAO_Asynch_Invocation or TAO_DII_Deferred_Invocation will go out of scope before we are done.

◆ transport_

TAO_Transport* TAO_Asynch_Reply_Dispatcher_Base::transport_
protected

This invocation is using this transport, may change...


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