00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef TAO_SERVER_REQUEST_INFO_H
00018 #define TAO_SERVER_REQUEST_INFO_H
00019
00020 #include "ace/pre.h"
00021
00022 #include "tao/orbconf.h"
00023
00024 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00025 # pragma once
00026 #endif
00027
00028 #if (TAO_HAS_INTERCEPTORS == 1)
00029
00030 #include "tao/AnyTypeCode/AnyTypeCode_methods.h"
00031 #include "tao/PI_Server/ServerRequestInfoC.h"
00032 #include "tao/PI/PIForwardRequestC.h"
00033 #include "tao/LocalObject.h"
00034 #include "tao/OctetSeqC.h"
00035 #include "tao/TAO_Server_Request.h"
00036 #include "tao/PortableInterceptorC.h"
00037
00038 #if defined(_MSC_VER)
00039 #pragma warning(push)
00040 #pragma warning(disable:4250)
00041 #endif
00042
00043 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00044
00045 class TAO_ServerRequest;
00046 class TAO_Service_Context;
00047
00048 namespace TAO
00049 {
00050 namespace Portable_Server
00051 {
00052 class Servant_Upcall;
00053 }
00054 }
00055
00056 namespace TAO
00057 {
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070 class ServerRequestInfo
00071 : public virtual PortableInterceptor::ServerRequestInfo
00072 , public virtual CORBA::LocalObject
00073 {
00074 public:
00075
00076
00077 ServerRequestInfo (TAO_ServerRequest & server_request,
00078 TAO::Argument * const * args,
00079 size_t nargs,
00080 void * servant_upcall,
00081 CORBA::TypeCode_ptr const * exceptions,
00082 CORBA::ULong nexceptions);
00083
00084
00085
00086 virtual CORBA::ULong request_id (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00087 ACE_THROW_SPEC ((CORBA::SystemException));
00088
00089
00090 virtual char * operation (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00091 ACE_THROW_SPEC ((CORBA::SystemException));
00092
00093
00094 virtual Dynamic::ParameterList * arguments (
00095 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00096 ACE_THROW_SPEC ((CORBA::SystemException));
00097
00098
00099
00100 virtual Dynamic::ExceptionList * exceptions (
00101 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00102 ACE_THROW_SPEC ((CORBA::SystemException));
00103
00104 virtual Dynamic::ContextList * contexts (
00105 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00106 ACE_THROW_SPEC ((CORBA::SystemException));
00107
00108 virtual Dynamic::RequestContext * operation_context (
00109 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00110 ACE_THROW_SPEC ((CORBA::SystemException));
00111
00112
00113
00114
00115 virtual CORBA::Any * result (
00116 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00117 ACE_THROW_SPEC ((CORBA::SystemException));
00118
00119
00120 virtual CORBA::Boolean response_expected (
00121 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00122 ACE_THROW_SPEC ((CORBA::SystemException));
00123
00124
00125
00126
00127 virtual Messaging::SyncScope sync_scope (
00128 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00129 ACE_THROW_SPEC ((CORBA::SystemException));
00130
00131
00132
00133
00134
00135
00136
00137 virtual PortableInterceptor::ReplyStatus reply_status (
00138 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00139 ACE_THROW_SPEC ((CORBA::SystemException));
00140
00141
00142
00143
00144 virtual CORBA::Object_ptr forward_reference (
00145 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00146 ACE_THROW_SPEC ((CORBA::SystemException)) ;
00147
00148
00149 virtual CORBA::Any * get_slot (
00150 PortableInterceptor::SlotId id
00151 ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00152 ACE_THROW_SPEC ((CORBA::SystemException,
00153 PortableInterceptor::InvalidSlot));
00154
00155
00156
00157 virtual IOP::ServiceContext * get_request_service_context (
00158 IOP::ServiceId id
00159 ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00160 ACE_THROW_SPEC ((CORBA::SystemException));
00161
00162
00163
00164 virtual IOP::ServiceContext * get_reply_service_context (
00165 IOP::ServiceId id
00166 ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00167 ACE_THROW_SPEC ((CORBA::SystemException));
00168
00169
00170
00171
00172
00173
00174
00175 virtual CORBA::Any * sending_exception (
00176 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00177 ACE_THROW_SPEC ((CORBA::SystemException));
00178
00179
00180 virtual PortableInterceptor::ObjectId * object_id (
00181 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00182 ACE_THROW_SPEC ((CORBA::SystemException));
00183
00184
00185
00186 virtual CORBA::OctetSeq * adapter_id (
00187 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00188 ACE_THROW_SPEC ((CORBA::SystemException));
00189
00190
00191
00192 virtual char * server_id (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00193 ACE_THROW_SPEC ((CORBA::SystemException));
00194
00195
00196
00197 virtual char * orb_id (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00198 ACE_THROW_SPEC ((CORBA::SystemException));
00199
00200
00201
00202 virtual PortableInterceptor::AdapterName * adapter_name (
00203 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00204 ACE_THROW_SPEC ((CORBA::SystemException));
00205
00206
00207 virtual char * target_most_derived_interface (
00208 ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS)
00209 ACE_THROW_SPEC ((CORBA::SystemException));
00210
00211
00212
00213 virtual CORBA::Policy_ptr get_server_policy (
00214 CORBA::PolicyType type
00215 ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00216 ACE_THROW_SPEC ((CORBA::SystemException));
00217
00218
00219 virtual void set_slot (PortableInterceptor::SlotId id,
00220 const CORBA::Any & data
00221 ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00222 ACE_THROW_SPEC ((CORBA::SystemException,
00223 PortableInterceptor::InvalidSlot));
00224
00225
00226
00227 virtual CORBA::Boolean target_is_a (const char * id
00228 ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00229 ACE_THROW_SPEC ((CORBA::SystemException));
00230
00231
00232
00233 virtual void add_reply_service_context (
00234 const IOP::ServiceContext & service_context,
00235 CORBA::Boolean replace
00236 ACE_ENV_ARG_DECL_WITH_DEFAULTS)
00237 ACE_THROW_SPEC ((CORBA::SystemException));
00238
00239 public:
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249 void forward_reference (PortableInterceptor::ForwardRequest &exc);
00250
00251
00252
00253
00254
00255
00256
00257
00258 void forward_reference (CORBA::Object_ptr obj);
00259
00260
00261
00262
00263
00264 TAO_ServerRequest &server_request (void);
00265
00266 protected:
00267
00268
00269
00270 IOP::ServiceContext * get_service_context_i (
00271 TAO_Service_Context & service_context_list,
00272 IOP::ServiceId id
00273 ACE_ENV_ARG_DECL)
00274 ACE_THROW_SPEC ((CORBA::SystemException));
00275
00276 protected:
00277
00278
00279
00280
00281 TAO_ServerRequest & server_request_;
00282
00283
00284 TAO::Argument * const * const args_;
00285
00286
00287 size_t const nargs_;
00288
00289
00290
00291 TAO::Portable_Server::Servant_Upcall * const servant_upcall_;
00292
00293
00294
00295 CORBA::TypeCode_ptr const * const exceptions_;
00296
00297
00298 CORBA::ULong const nexceptions_;
00299 };
00300
00301 }
00302
00303 TAO_END_VERSIONED_NAMESPACE_DECL
00304
00305 # if defined (__ACE_INLINE__)
00306 # include "tao/PI_Server/ServerRequestInfo.inl"
00307 # endif
00308
00309 #if defined(_MSC_VER)
00310 #pragma warning(pop)
00311 #endif
00312
00313 #endif
00314
00315 #include "ace/post.h"
00316
00317 #endif