00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef AXIS2_MSG_H
00018 #define AXIS2_MSG_H
00019
00034 #include <axis2_param_container.h>
00035 #include <axis2_op.h>
00036 #include <axis2_array_list.h>
00037 #include <axis2_description.h>
00038 #include <axis2_phase_meta.h>
00039
00040 #define AXIS2_MSG_IN "InMessage"
00041 #define AXIS2_MSG_OUT "OutMessage"
00042 #define AXIS2_MSG_IN_FAULT "InFaultMessage"
00043 #define AXIS2_MSG_OUT_FAULT "OutFaultMessage"
00044
00045
00046 #ifdef __cplusplus
00047 extern "C"
00048 {
00049 #endif
00050
00052 typedef struct axis2_msg_ops axis2_msg_ops_t;
00054 typedef struct axis2_msg axis2_msg_t;
00055
00060 struct axis2_msg_ops
00061 {
00068 axis2_status_t (AXIS2_CALL *
00069 free)(
00070 axis2_msg_t *msg,
00071 const axis2_env_t *env);
00072
00081 axis2_status_t (AXIS2_CALL *
00082 add_param)(
00083 axis2_msg_t *msg,
00084 const axis2_env_t *env,
00085 axis2_param_t *param);
00086
00095 axis2_param_t *(AXIS2_CALL *
00096 get_param)(
00097 const axis2_msg_t *msg,
00098 const axis2_env_t *env,
00099 const axis2_char_t *name);
00100
00108 axis2_array_list_t *(AXIS2_CALL *
00109 get_all_params)(
00110 const axis2_msg_t *msg,
00111 const axis2_env_t *env);
00112
00120 axis2_bool_t (AXIS2_CALL *
00121 is_param_locked)(
00122 axis2_msg_t *msg,
00123 const axis2_env_t *env,
00124 const axis2_char_t *param_name);
00125
00134 axis2_status_t (AXIS2_CALL *
00135 set_parent)(
00136 axis2_msg_t *msg,
00137 const axis2_env_t *env,
00138 axis2_op_t *op);
00139
00147 axis2_op_t *(AXIS2_CALL *
00148 get_parent)(
00149 const axis2_msg_t *msg,
00150 const axis2_env_t *env);
00151
00159 axis2_array_list_t *(AXIS2_CALL *
00160 get_flow)(
00161 const axis2_msg_t *msg,
00162 const axis2_env_t *env);
00163
00172 axis2_status_t (AXIS2_CALL *
00173 set_flow)(
00174 axis2_msg_t *msg,
00175 const axis2_env_t *env,
00176 axis2_array_list_t *flow);
00177
00184 const axis2_char_t *(AXIS2_CALL *
00185 get_direction)(
00186 const axis2_msg_t *msg,
00187 const axis2_env_t *env);
00188
00196 axis2_status_t (AXIS2_CALL *
00197 set_direction)(
00198 axis2_msg_t *msg,
00199 const axis2_env_t *env,
00200 const axis2_char_t *direction);
00201
00208 const axis2_qname_t *(AXIS2_CALL *
00209 get_element_qname)(
00210 const axis2_msg_t *msg,
00211 const axis2_env_t *env);
00212
00221 axis2_status_t (AXIS2_CALL *
00222 set_element_qname)(
00223 axis2_msg_t *msg,
00224 const axis2_env_t *env,
00225 const axis2_qname_t *element_qname);
00226
00233 const axis2_char_t *(AXIS2_CALL *
00234 get_name)(
00235 const axis2_msg_t *msg,
00236 const axis2_env_t *env);
00237
00245 axis2_status_t (AXIS2_CALL *
00246 set_name)(
00247 axis2_msg_t *msg,
00248 const axis2_env_t *env,
00249 const axis2_char_t *name);
00250
00258 xml_schema_element_t *(AXIS2_CALL *
00259 get_schema_element)(
00260 const axis2_msg_t *msg,
00261 const axis2_env_t *env);
00262 };
00263
00267 struct axis2_msg
00268 {
00270 axis2_msg_ops_t *ops;
00272 struct axis2_param_container *param_container;
00273 };
00274
00280 AXIS2_EXTERN axis2_msg_t *AXIS2_CALL
00281 axis2_msg_create(
00282 const axis2_env_t *env);
00283
00284
00287 #define AXIS2_MSG_FREE(msg, env) \
00288 ((msg)->ops->free (msg, env))
00289
00292 #define AXIS2_MSG_ADD_PARAM(msg, env, param) \
00293 ((msg)->ops->add_param (msg, env, param))
00294
00297 #define AXIS2_MSG_GET_PARAM(msg, env, key) \
00298 ((msg)->ops->get_param (msg, env, key))
00299
00302 #define AXIS2_MSG_GET_ALL_PARAMS(msg, env) \
00303 ((msg)->ops->get_all_params (msg, env))
00304
00307 #define AXIS2_MSG_IS_PARAM_LOCKED(msg, env, param_name) \
00308 ((msg)->ops->is_param_locked(msg, env, param_name))
00309
00312 #define AXIS2_MSG_SET_PARENT(msg, env, service_desc) \
00313 ((msg)->ops->set_parent (msg, env, service_desc))
00314
00317 #define AXIS2_MSG_GET_PARENT(msg, env) \
00318 ((msg)->ops->get_parent (msg, env))
00319
00322 #define AXIS2_MSG_GET_FLOW(msg, env) \
00323 ((msg)->ops->get_flow (msg, env))
00324
00327 #define AXIS2_MSG_SET_FLOW(msg, env, flow) \
00328 ((msg)->ops->set_flow (msg, env, flow))
00329
00332 #define AXIS2_MSG_GET_DIRECTION(msg, env) \
00333 ((msg)->ops->get_direction (msg, env))
00334
00337 #define AXIS2_MSG_SET_DIRECTION(msg, env, direction) \
00338 ((msg)->ops->set_direction (msg, env, direction))
00339
00342 #define AXIS2_MSG_GET_ELEMENT_QNAME(msg, env) \
00343 ((msg)->ops->get_element_qname(msg, env))
00344
00347 #define AXIS2_MSG_SET_ELEMENT_QNAME(msg, env, element_qname) \
00348 ((msg)->ops->set_element_qname(msg, env, element_qname))
00349
00352 #define AXIS2_MSG_GET_NAME(msg, env) \
00353 ((msg)->ops->get_name(msg, env))
00354
00357 #define AXIS2_MSG_SET_NAME(msg, env, name) \
00358 ((msg)->ops->set_name(msg, env, name))
00359
00362 #define AXIS2_MSG_GET_SCHEMA_ELEMENT(msg, env) \
00363 ((msg)->ops->get_schema_element(msg, env))
00364
00366 #ifdef __cplusplus
00367 }
00368 #endif
00369 #endif