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

Asynch_Reply_Dispatcher_Base.h

Go to the documentation of this file.
00001 // This may look like C, but it's really -*- C++ -*-
00002 //=============================================================================
00003 /**
00004  *  @file Asynch_Reply_Dispatcher_Base.h
00005  *
00006  *  $Id: Asynch_Reply_Dispatcher_Base.h,v 1.1.1.1 2003/02/21 18:36:44 chad Exp $
00007  *
00008  *  @author Alexander Babu Arulanthu <alex@cs.wustl.edu>
00009  *  @author Jeff Parsons <parsons@cs.wustl.edu>
00010  */
00011 //=============================================================================
00012 
00013 #ifndef TAO_ASYNCH_REPLY_DISPATCHER_BASE_H
00014 #define TAO_ASYNCH_REPLY_DISPATCHER_BASE_H
00015 #include "ace/pre.h"
00016 
00017 #include "tao/orbconf.h"
00018 
00019 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00020 # pragma once
00021 #endif /* ACE_LACKS_PRAGMA_ONCE */
00022 
00023 #include "tao/Transport.h"
00024 #include "tao/Reply_Dispatcher.h"
00025 
00026 class TAO_Pluggable_Reply_Params;
00027 class TAO_ORB_Core ;
00028 
00029 /// Base class for TAO_Asynch_Reply_Dispatcher and
00030 /// TAO_DII_Deferred_Reply_Dispatcher
00031 class TAO_Export TAO_Asynch_Reply_Dispatcher_Base : public TAO_Reply_Dispatcher
00032 {
00033 public:
00034   /// Default constructor.
00035   TAO_Asynch_Reply_Dispatcher_Base (TAO_ORB_Core *orb_core);
00036 
00037   /// Destructor.
00038   virtual ~TAO_Asynch_Reply_Dispatcher_Base (void);
00039 
00040   /// Sets the transport for this invocation.
00041   void transport (TAO_Transport *t);
00042 
00043   // = The Reply Dispatcher methods
00044   virtual int dispatch_reply (TAO_Pluggable_Reply_Params &params);
00045 
00046   // virtual TAO_GIOP_Message_State *message_state (void);
00047 
00048   virtual void connection_closed (void);
00049 
00050     /// Inform that the reply timed out
00051   virtual void reply_timed_out (void);
00052 
00053   /// Install the timeout handler
00054   virtual long schedule_timer (CORBA::ULong request_id,
00055                                const ACE_Time_Value &max_wait_time);
00056 
00057 protected:
00058   /// The service context list.
00059   /**
00060    * Note, that this is not a reference as in
00061    * the synchronous case. We own the reply_service_info
00062    * because our TAO_Asynch_Invocation or TAO_DII_Deferred_Invocation
00063    * will go out of scope before we are done.
00064    */
00065   IOP::ServiceContextList reply_service_info_;
00066 
00067   /// The buffer that is used to initialise the data block
00068   char buf_[ACE_CDR::DEFAULT_BUFSIZE];
00069 
00070   /// datablock that is created on the stack to initialise the CDR
00071   /// stream underneath.
00072   ACE_Data_Block db_;
00073 
00074   /// CDR stream which has the reply information that needs to be
00075   /// demarshalled by the stubs
00076   TAO_InputCDR reply_cdr_;
00077 
00078   /// This invocation is using this transport, may change...
00079   TAO_Transport *transport_;
00080 };
00081 
00082 #if defined (__ACE_INLINE__)
00083 #include "tao/Asynch_Reply_Dispatcher_Base.i"
00084 #endif /* __ACE_INLINE__ */
00085 
00086 #include "ace/post.h"
00087 #endif /* TAO_ASYNCH_REPLY_DISPATCHER_BASE_H */

Generated on Mon Jun 16 13:48:01 2003 for TAO by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002