Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef TAO_SERVER_INTERCEPTOR_ADAPTER_H
00019 #define TAO_SERVER_INTERCEPTOR_ADAPTER_H
00020
00021 #include "ace/pre.h"
00022
00023 #include "tao/orbconf.h"
00024
00025 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00026 # pragma once
00027 #endif
00028
00029 #if TAO_HAS_INTERCEPTORS == 1
00030
00031 #include "tao/PI_Server/PI_Server_includeC.h"
00032
00033 #include "tao/PI/Interceptor_List_T.h"
00034 #include "tao/ServerRequestInterceptor_Adapter.h"
00035 #include "tao/PI/RequestInterceptor_Adapter_Impl.h"
00036 #include "tao/Basic_Types.h"
00037 #include "tao/PI_Server/ServerRequestDetails.h"
00038
00039 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00040
00041 namespace TAO
00042 {
00043 typedef Interceptor_List< ::PortableInterceptor::ServerRequestInterceptor,
00044 ServerRequestDetails>
00045 ServerRequestInterceptor_List;
00046 }
00047
00048 namespace CORBA
00049 {
00050 class PolicyList;
00051 }
00052
00053 class TAO_ServerRequest;
00054
00055 namespace TAO
00056 {
00057 class ServerRequestInfo;
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067 class ServerRequestInterceptor_Adapter_Impl
00068 : public ServerRequestInterceptor_Adapter
00069 , public TAO_RequestInterceptor_Adapter_Impl
00070 {
00071 public:
00072
00073 ServerRequestInterceptor_Adapter_Impl (void);
00074
00075
00076
00077
00078
00079
00080
00081
00082 #if TAO_HAS_EXTENDED_FT_INTERCEPTORS == 1
00083
00084
00085
00086 void tao_ft_interception_point (
00087 TAO_ServerRequest &server_request,
00088 TAO::Argument * const args[],
00089 size_t nargs,
00090 void * servant_upcall,
00091 CORBA::TypeCode_ptr const * exceptions,
00092 CORBA::ULong nexceptions,
00093 CORBA::OctetSeq_out oc);
00094 #endif
00095
00096
00097
00098
00099
00100
00101
00102
00103 void receive_request_service_contexts (
00104 TAO_ServerRequest &server_request,
00105 TAO::Argument * const args[],
00106 size_t nargs,
00107 void * servant_upcall,
00108 CORBA::TypeCode_ptr const * exceptions,
00109 CORBA::ULong nexceptions);
00110
00111
00112 void receive_request (
00113 TAO_ServerRequest &server_request,
00114 TAO::Argument * const args[],
00115 size_t nargs,
00116 void * servant_upcall,
00117 CORBA::TypeCode_ptr const * exceptions,
00118 CORBA::ULong nexceptions);
00119
00120
00121
00122 void send_reply (
00123 TAO_ServerRequest &server_request,
00124 TAO::Argument * const args[],
00125 size_t nargs,
00126 void * servant_upcall,
00127 CORBA::TypeCode_ptr const * exceptions,
00128 CORBA::ULong nexceptions);
00129
00130
00131
00132 void send_exception (
00133 TAO_ServerRequest &server_request,
00134 TAO::Argument * const args[],
00135 size_t nargs,
00136 void * servant_upcall,
00137 CORBA::TypeCode_ptr const * exceptions,
00138 CORBA::ULong nexceptions);
00139
00140
00141
00142 void send_other (
00143 TAO_ServerRequest &server_request,
00144 TAO::Argument * const args[],
00145 size_t nargs,
00146 void * servant_upcall,
00147 CORBA::TypeCode_ptr const * exceptions,
00148 CORBA::ULong nexceptions);
00149
00150
00151
00152 virtual void add_interceptor (
00153 PortableInterceptor::ServerRequestInterceptor_ptr interceptor
00154 );
00155
00156 virtual void add_interceptor (
00157 PortableInterceptor::ServerRequestInterceptor_ptr interceptor,
00158 const CORBA::PolicyList& policies);
00159
00160 virtual void destroy_interceptors (void);
00161
00162 virtual TAO::PICurrent_Impl *allocate_pi_current (void);
00163
00164 virtual void deallocate_pi_current (TAO::PICurrent_Impl *picurrent);
00165
00166 virtual void execute_command (
00167 TAO_ServerRequest &server_request,
00168 TAO::Upcall_Command &command);
00169
00170 void popTSC (TAO_ORB_Core *orb_core)
00171 {TAO_RequestInterceptor_Adapter_Impl::popTSC (orb_core);}
00172 void pushTSC (TAO_ORB_Core *orb_core)
00173 {TAO_RequestInterceptor_Adapter_Impl::pushTSC (orb_core);}
00174
00175 private:
00176
00177 ServerRequestInterceptor_List interceptor_list_;
00178 };
00179 }
00180
00181 TAO_END_VERSIONED_NAMESPACE_DECL
00182
00183 #endif
00184
00185 #include "ace/post.h"
00186
00187 #endif