00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef TAO_DII_INVOCATION_ADAPTER_H
00013 #define TAO_DII_INVOCATION_ADAPTER_H
00014 #include "ace/pre.h"
00015
00016 #include "tao/DynamicInterface/dynamicinterface_export.h"
00017
00018 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00019 # pragma once
00020 #endif
00021
00022
00023 #include "tao/Invocation_Adapter.h"
00024
00025 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00026 class ACE_Time_Value;
00027 ACE_END_VERSIONED_NAMESPACE_DECL
00028
00029
00030 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00031 class TAO_Operation_Details;
00032 class TAO_Stub;
00033 class TAO_ORB_Core;
00034 class TAO_DII_Deferred_Reply_Dispatcher;
00035 namespace CORBA
00036 {
00037 class Object;
00038 class Environment;
00039 class SystemException;
00040 class ExceptionList;
00041 class Request;
00042 }
00043
00044 namespace TAO
00045 {
00046 class Argument;
00047 class Collocation_Proxy_Broker;
00048 struct Exception_Data;
00049
00050
00051
00052
00053
00054
00055 class TAO_DynamicInterface_Export DII_Invocation_Adapter :
00056 public Invocation_Adapter
00057 {
00058 public:
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088 DII_Invocation_Adapter (CORBA::Object *target,
00089 Argument **args,
00090 int arg_number,
00091 const char *operation,
00092 size_t op_len,
00093 CORBA::ExceptionList *exception,
00094 CORBA::Request *r,
00095 Invocation_Mode m = TAO_DII_INVOCATION);
00096
00097
00098 virtual ~DII_Invocation_Adapter (void) {}
00099
00100 protected:
00101
00102 virtual Invocation_Status invoke_twoway (
00103 TAO_Operation_Details &op,
00104 CORBA::Object_var &effective_target,
00105 Profile_Transport_Resolver &r,
00106 ACE_Time_Value *&max_wait_time
00107 ACE_ENV_ARG_DECL);
00108
00109 private:
00110
00111 CORBA::ExceptionList *exception_list_;
00112
00113 CORBA::Request *request_;
00114 private:
00115
00116
00117 DII_Invocation_Adapter (void);
00118
00119 DII_Invocation_Adapter (const DII_Invocation_Adapter &);
00120 DII_Invocation_Adapter & operator= (const DII_Invocation_Adapter &);
00121 };
00122
00123
00124
00125
00126 class TAO_DynamicInterface_Export DII_Deferred_Invocation_Adapter
00127 : protected Invocation_Adapter
00128 {
00129 public:
00130 DII_Deferred_Invocation_Adapter (
00131 CORBA::Object *target,
00132 Argument **args,
00133 int arg_number,
00134 const char *operation,
00135 size_t op_len,
00136 Collocation_Proxy_Broker *b,
00137 TAO_ORB_Core *oc,
00138 CORBA::Request *req,
00139 TAO::Invocation_Mode mode = TAO_DII_DEFERRED_INVOCATION);
00140
00141
00142 virtual void invoke (TAO::Exception_Data *ex,
00143 unsigned long ex_count
00144 ACE_ENV_ARG_DECL);
00145
00146
00147 protected:
00148 virtual Invocation_Status invoke_twoway (
00149 TAO_Operation_Details &op,
00150 CORBA::Object_var &effective_target,
00151 Profile_Transport_Resolver &r,
00152 ACE_Time_Value *&max_wait_time
00153 ACE_ENV_ARG_DECL);
00154
00155 private:
00156 CORBA::Request *request_;
00157
00158
00159 TAO_DII_Deferred_Reply_Dispatcher *rd_;
00160
00161
00162 TAO_ORB_Core * const orb_core_;
00163 };
00164 }
00165
00166 TAO_END_VERSIONED_NAMESPACE_DECL
00167
00168 #include "ace/post.h"
00169 #endif