00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef TAO_OPERATION_DETAILS_H
00013 #define TAO_OPERATION_DETAILS_H
00014
00015 #include "ace/pre.h"
00016
00017 #include "tao/SystemException.h"
00018
00019 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00020 # pragma once
00021 #endif
00022
00023 #include "tao/Service_Context.h"
00024 #include "tao/TimeBaseC.h"
00025 #include "tao/target_specification.h"
00026
00027
00028 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00029
00030
00031 namespace Dynamic
00032 {
00033 class ParameterList;
00034 class ExceptionList;
00035 }
00036
00037 namespace TAO
00038 {
00039 class Argument;
00040 struct Exception_Data;
00041 }
00042
00043 namespace TAO
00044 {
00045 namespace CSD
00046 {
00047 class FW_Server_Request_Wrapper;
00048 }
00049 }
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063 class TAO_Export TAO_Operation_Details
00064 {
00065 public:
00066
00067
00068
00069
00070 friend class TAO::CSD::FW_Server_Request_Wrapper;
00071
00072
00073 TAO_Operation_Details (const char *name,
00074 CORBA::ULong len,
00075 CORBA::Boolean argument_flag,
00076 TAO::Argument **args = 0,
00077 CORBA::ULong num_args = 0,
00078 TAO::Exception_Data *ex_data = 0,
00079 CORBA::ULong ex_count = 0);
00080
00081
00082 const char* opname (void) const;
00083
00084
00085 CORBA::ULong opname_len (void) const;
00086
00087
00088
00089 CORBA::Boolean argument_flag (void) const;
00090
00091
00092 void response_flags (CORBA::Octet flags);
00093
00094
00095 CORBA::Octet response_flags (void) const;
00096
00097
00098 IOP::ServiceContextList &request_service_info (void);
00099 const IOP::ServiceContextList &request_service_info (void) const;
00100 IOP::ServiceContextList &reply_service_info (void);
00101 const IOP::ServiceContextList &reply_service_info (void) const;
00102
00103
00104 TAO_Service_Context &request_service_context (void);
00105 const TAO_Service_Context &request_service_context (void) const;
00106 TAO_Service_Context &reply_service_context (void);
00107 const TAO_Service_Context &reply_service_context (void) const;
00108
00109
00110
00111 void reset_request_service_info (void);
00112 void reset_reply_service_info (void);
00113
00114
00115 void request_id (CORBA::ULong id);
00116
00117
00118 CORBA::ULong request_id (void) const;
00119
00120
00121 TAO_Target_Specification::TAO_Target_Address addressing_mode (void) const;
00122
00123
00124 void addressing_mode (CORBA::Short addr);
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135 CORBA::Exception *corba_exception (const char *ex
00136 ACE_ENV_ARG_DECL)
00137 ACE_THROW_SPEC ((CORBA::SystemException));
00138
00139
00140
00141
00142
00143
00144
00145 bool marshal_args (TAO_OutputCDR &cdr);
00146
00147
00148 bool demarshal_args (TAO_InputCDR &cdr);
00149
00150
00151 TAO::Argument ** args (void) const;
00152 CORBA::ULong args_num (void) const ;
00153
00154
00155 CORBA::ULong ex_count (void) const;
00156
00157 TAO::Exception_Data const * ex_data (void) const;
00158
00159 void ft_expiration_time (TimeBase::TimeT time);
00160 TimeBase::TimeT ft_expiration_time (void) const;
00161
00162 void ft_retention_id (CORBA::Long request_id);
00163 CORBA::Long ft_retention_id (void) const;
00164
00165 private:
00166
00167
00168 const char *opname_;
00169
00170
00171 CORBA::ULong opname_len_;
00172
00173
00174 CORBA::ULong request_id_;
00175
00176
00177
00178
00179
00180 CORBA::Boolean argument_flag_;
00181
00182
00183 CORBA::Octet response_flags_;
00184
00185
00186
00187 TAO_Service_Context request_service_info_;
00188
00189
00190
00191 TAO_Service_Context reply_service_info_;
00192
00193
00194 TAO_Target_Specification::TAO_Target_Address addressing_mode_;
00195
00196
00197
00198
00199
00200 TAO::Argument **args_;
00201
00202
00203 CORBA::ULong num_args_;
00204
00205
00206 TAO::Exception_Data *ex_data_;
00207
00208
00209 CORBA::ULong ex_count_;
00210 #if TAO_HAS_INTERCEPTORS == 1
00211
00212 TimeBase::TimeT ft_expiration_time_;
00213
00214
00215 CORBA::Long ft_retention_id_;
00216 #endif
00217 };
00218
00219 TAO_END_VERSIONED_NAMESPACE_DECL
00220
00221 #if defined (__ACE_INLINE__)
00222 # include "tao/operation_details.i"
00223 #endif
00224
00225 #include "ace/post.h"
00226
00227 #endif