DII_Invocation.h

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 
00003 //=============================================================================
00004 /**
00005  *  @file    DII_Invocation.h
00006  *
00007  *  $Id: DII_Invocation.h 77463 2007-02-28 21:31:26Z zhangw $
00008  *
00009  *  @brief The DII invocation classes.
00010  *
00011  *  @author Carlos O'Ryan <coryan@cs.wustl.edu>
00012  *  @author Alexander Babu Arulanthu <alex@cs.wustl.edu>
00013  *  @author Jeff Parsons <parsons@cs.wustl.edu>
00014  */
00015 //=============================================================================
00016 
00017 #ifndef TAO_DII_INVOCATION_H
00018 #define TAO_DII_INVOCATION_H
00019 
00020 #include /**/ "ace/pre.h"
00021 
00022 #include "tao/DynamicInterface/dynamicinterface_export.h"
00023 
00024 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00025 #  pragma once
00026 #endif /* ACE_LACKS_PRAGMA_ONCE */
00027 
00028 #include "tao/Synch_Invocation.h"
00029 #include "tao/Messaging/Asynch_Invocation.h"
00030 
00031 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00032 
00033 class TAO_DII_Deferred_Reply_Dispatcher;
00034 class TAO_DII_Asynch_Reply_Dispatcher;
00035 
00036 namespace Dynamic
00037 {
00038   class ParameterList;
00039 }
00040 
00041 namespace TAO
00042 {
00043   class TAO_DynamicInterface_Export DII_Invocation:
00044     public Synch_Twoway_Invocation
00045   {
00046   public:
00047     friend class DII_Invocation_Adapter;
00048 
00049     DII_Invocation (CORBA::Object_ptr otarget,
00050                     Profile_Transport_Resolver &resolver,
00051                     TAO_Operation_Details &detail,
00052                     CORBA::ExceptionList *excp,
00053                     CORBA::Request_ptr req,
00054                     bool response_expected = true);
00055 
00056 #if TAO_HAS_INTERCEPTORS ==1
00057     virtual Dynamic::ParameterList *arguments (void);
00058 #endif /*TAO_HAS_INTERCEPTORS == 1*/
00059 
00060     Invocation_Status remote_invocation (ACE_Time_Value *max_wait_time);
00061 
00062     virtual Invocation_Status handle_user_exception (TAO_InputCDR &cdr);
00063   private:
00064 
00065     CORBA::ExceptionList *excp_list_;
00066 
00067     /// Back pointer to the DII request that created us.
00068     CORBA::Request_ptr host_;
00069 
00070   };
00071 
00072   class TAO_DynamicInterface_Export DII_Deferred_Invocation
00073     : public Asynch_Remote_Invocation
00074   {
00075   public:
00076     friend class DII_Deferred_Invocation_Adapter;
00077 
00078     DII_Deferred_Invocation (CORBA::Object_ptr otarget,
00079                              Profile_Transport_Resolver &resolver,
00080                              TAO_Operation_Details &detail,
00081                              TAO_DII_Deferred_Reply_Dispatcher *rd,
00082                              CORBA::Request_ptr req,
00083                              bool response_expected = true);
00084 
00085 #if TAO_HAS_INTERCEPTORS ==1
00086     virtual Dynamic::ParameterList *arguments (void);
00087 #endif /*TAO_HAS_INTERCEPTORS == 1*/
00088 
00089     Invocation_Status remote_invocation (ACE_Time_Value *max_wait_time);
00090 
00091   private:
00092 
00093     /// Back pointer to the DII request that created us.
00094     CORBA::Request_ptr host_;
00095 
00096   };
00097 
00098   /**
00099    * @class TAO_GIOP_DII_Asynch_Invocation
00100    *
00101    * @brief This class is responsible to send the asynchronous
00102    * invocation.
00103    *
00104    * This class is responsible to send the asynchronous
00105    * invocation. This class connects (or looks up a connection from the cache)
00106    * to the remote server, builds the CDR stream for the Request, send
00107    * the CDR stream and returns.
00108    *
00109    */
00110   class TAO_DynamicInterface_Export TAO_GIOP_DII_Asynch_Invocation
00111     : public TAO::Asynch_Remote_Invocation
00112   {
00113   public:
00114     TAO_GIOP_DII_Asynch_Invocation (TAO_Stub *data,
00115                                     TAO_ORB_Core* orb_core,
00116                                     CORBA::Boolean argument_flag,
00117                                     const CORBA::Request_ptr req,
00118                                     CORBA::Object_ptr reply_handler,
00119                                     int byte_order = TAO_ENCAP_BYTE_ORDER);
00120 
00121     int invoke (void);
00122 
00123   private:
00124     /// Implementation of the invoke() methods, handles the basic
00125     /// send/reply code and the system exceptions.
00126     int invoke_i (void);
00127 
00128 
00129     /// Reply dispatcher for the current synchronous Asynch_Invocation.
00130     TAO_DII_Asynch_Reply_Dispatcher *rd_;
00131   };
00132 
00133 }
00134 
00135 TAO_END_VERSIONED_NAMESPACE_DECL
00136 
00137 #include /**/ "ace/post.h"
00138 
00139 #endif /* TAO_DII_INVOCATION_H */

Generated on Sun Jan 27 13:37:31 2008 for TAO_DynamicInterface by doxygen 1.3.6