00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef AXIS2_MSG_H
00019 #define AXIS2_MSG_H
00020
00035 #include <axis2_param_container.h>
00036 #include <axis2_op.h>
00037 #include <axis2_array_list.h>
00038 #include <axis2_description.h>
00039 #include <axis2_phase_meta.h>
00040
00041 #define AXIS2_MSG_IN "InMessage"
00042 #define AXIS2_MSG_OUT "OutMessage"
00043 #define AXIS2_MSG_IN_FAULT "InFaultMessage"
00044 #define AXIS2_MSG_OUT_FAULT "OutFaultMessage"
00045
00046
00047 #ifdef __cplusplus
00048 extern "C"
00049 {
00050 #endif
00051
00053 typedef struct axis2_msg_ops axis2_msg_ops_t;
00055 typedef struct axis2_msg axis2_msg_t;
00056
00061 struct axis2_msg_ops
00062 {
00069 axis2_status_t (AXIS2_CALL *
00070 free)(
00071 axis2_msg_t *msg,
00072 const axis2_env_t *env);
00073
00082 axis2_status_t (AXIS2_CALL *
00083 add_param)(
00084 axis2_msg_t *msg,
00085 const axis2_env_t *env,
00086 axis2_param_t *param);
00087
00096 axis2_param_t *(AXIS2_CALL *
00097 get_param)(
00098 const axis2_msg_t *msg,
00099 const axis2_env_t *env,
00100 const axis2_char_t *name);
00101
00109 axis2_array_list_t *(AXIS2_CALL *
00110 get_all_params)(
00111 const axis2_msg_t *msg,
00112 const axis2_env_t *env);
00113
00121 axis2_bool_t (AXIS2_CALL *
00122 is_param_locked)(
00123 axis2_msg_t *msg,
00124 const axis2_env_t *env,
00125 const axis2_char_t *param_name);
00126
00135 axis2_status_t (AXIS2_CALL *
00136 set_parent)(
00137 axis2_msg_t *msg,
00138 const axis2_env_t *env,
00139 axis2_op_t *op);
00140
00148 axis2_op_t *(AXIS2_CALL *
00149 get_parent)(
00150 const axis2_msg_t *msg,
00151 const axis2_env_t *env);
00152
00160 axis2_array_list_t *(AXIS2_CALL *
00161 get_flow)(
00162 const axis2_msg_t *msg,
00163 const axis2_env_t *env);
00164
00173 axis2_status_t (AXIS2_CALL *
00174 set_flow)(
00175 axis2_msg_t *msg,
00176 const axis2_env_t *env,
00177 axis2_array_list_t *flow);
00178
00185 const axis2_char_t *(AXIS2_CALL *
00186 get_direction)(
00187 const axis2_msg_t *msg,
00188 const axis2_env_t *env);
00189
00197 axis2_status_t (AXIS2_CALL *
00198 set_direction)(
00199 axis2_msg_t *msg,
00200 const axis2_env_t *env,
00201 const axis2_char_t *direction);
00202
00209 const axis2_qname_t *(AXIS2_CALL *
00210 get_element_qname)(
00211 const axis2_msg_t *msg,
00212 const axis2_env_t *env);
00213
00222 axis2_status_t (AXIS2_CALL *
00223 set_element_qname)(
00224 axis2_msg_t *msg,
00225 const axis2_env_t *env,
00226 const axis2_qname_t *element_qname);
00227
00234 const axis2_char_t *(AXIS2_CALL *
00235 get_name)(
00236 const axis2_msg_t *msg,
00237 const axis2_env_t *env);
00238
00246 axis2_status_t (AXIS2_CALL *
00247 set_name)(
00248 axis2_msg_t *msg,
00249 const axis2_env_t *env,
00250 const axis2_char_t *name);
00251
00259 xml_schema_element_t *(AXIS2_CALL *
00260 get_schema_element)(
00261 const axis2_msg_t *msg,
00262 const axis2_env_t *env);
00263 };
00264
00268 struct axis2_msg
00269 {
00271 axis2_msg_ops_t *ops;
00273 struct axis2_param_container *param_container;
00274 };
00275
00281 AXIS2_EXTERN axis2_msg_t *AXIS2_CALL
00282 axis2_msg_create(
00283 const axis2_env_t *env);
00284
00285
00288 #define AXIS2_MSG_FREE(msg, env) \
00289 ((msg)->ops->free (msg, env))
00290
00293 #define AXIS2_MSG_ADD_PARAM(msg, env, param) \
00294 ((msg)->ops->add_param (msg, env, param))
00295
00298 #define AXIS2_MSG_GET_PARAM(msg, env, key) \
00299 ((msg)->ops->get_param (msg, env, key))
00300
00303 #define AXIS2_MSG_GET_ALL_PARAMS(msg, env) \
00304 ((msg)->ops->get_all_params (msg, env))
00305
00308 #define AXIS2_MSG_IS_PARAM_LOCKED(msg, env, param_name) \
00309 ((msg)->ops->is_param_locked(msg, env, param_name))
00310
00313 #define AXIS2_MSG_SET_PARENT(msg, env, service_desc) \
00314 ((msg)->ops->set_parent (msg, env, service_desc))
00315
00318 #define AXIS2_MSG_GET_PARENT(msg, env) \
00319 ((msg)->ops->get_parent (msg, env))
00320
00323 #define AXIS2_MSG_GET_FLOW(msg, env) \
00324 ((msg)->ops->get_flow (msg, env))
00325
00328 #define AXIS2_MSG_SET_FLOW(msg, env, flow) \
00329 ((msg)->ops->set_flow (msg, env, flow))
00330
00333 #define AXIS2_MSG_GET_DIRECTION(msg, env) \
00334 ((msg)->ops->get_direction (msg, env))
00335
00338 #define AXIS2_MSG_SET_DIRECTION(msg, env, direction) \
00339 ((msg)->ops->set_direction (msg, env, direction))
00340
00343 #define AXIS2_MSG_GET_ELEMENT_QNAME(msg, env) \
00344 ((msg)->ops->get_element_qname(msg, env))
00345
00348 #define AXIS2_MSG_SET_ELEMENT_QNAME(msg, env, element_qname) \
00349 ((msg)->ops->set_element_qname(msg, env, element_qname))
00350
00353 #define AXIS2_MSG_GET_NAME(msg, env) \
00354 ((msg)->ops->get_name(msg, env))
00355
00358 #define AXIS2_MSG_SET_NAME(msg, env, name) \
00359 ((msg)->ops->set_name(msg, env, name))
00360
00363 #define AXIS2_MSG_GET_SCHEMA_ELEMENT(msg, env) \
00364 ((msg)->ops->get_schema_element(msg, env))
00365
00367 #ifdef __cplusplus
00368 }
00369 #endif
00370 #endif