Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
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
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
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
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
00088
00089 Invocation_Status remote_invocation (ACE_Time_Value *max_wait_time);
00090
00091 private:
00092
00093 CORBA::Request_ptr host_;
00094 };
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
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
00123
00124 int invoke_i (void);
00125
00126
00127
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