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 80108 2007-11-27 11:22:38Z johnnyw $
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 
00064   private:
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     /// Back pointer to the DII request that created us.
00093     CORBA::Request_ptr host_;
00094   };
00095 
00096   /**
00097    * @class TAO_GIOP_DII_Asynch_Invocation
00098    *
00099    * @brief This class is responsible to send the asynchronous
00100    * invocation.
00101    *
00102    * This class is responsible to send the asynchronous
00103    * invocation. This class connects (or looks up a connection from the cache)
00104    * to the remote server, builds the CDR stream for the Request, send
00105    * the CDR stream and returns.
00106    *
00107    */
00108   class TAO_DynamicInterface_Export TAO_GIOP_DII_Asynch_Invocation
00109     : public TAO::Asynch_Remote_Invocation
00110   {
00111   public:
00112     TAO_GIOP_DII_Asynch_Invocation (TAO_Stub *data,
00113                                     TAO_ORB_Core* orb_core,
00114                                     CORBA::Boolean argument_flag,
00115                                     const CORBA::Request_ptr req,
00116                                     CORBA::Object_ptr reply_handler,
00117                                     int byte_order = TAO_ENCAP_BYTE_ORDER);
00118 
00119     int invoke (void);
00120 
00121   private:
00122     /// Implementation of the invoke() methods, handles the basic
00123     /// send/reply code and the system exceptions.
00124     int invoke_i (void);
00125 
00126 
00127     /// Reply dispatcher for the current synchronous Asynch_Invocation.
00128     TAO_DII_Asynch_Reply_Dispatcher *rd_;
00129   };
00130 
00131 }
00132 
00133 TAO_END_VERSIONED_NAMESPACE_DECL
00134 
00135 #include /**/ "ace/post.h"
00136 
00137 #endif /* TAO_DII_INVOCATION_H */

Generated on Tue Feb 2 17:43:23 2010 for TAO_DynamicInterface by  doxygen 1.4.7