00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef AXIS2_OP_H
00018 #define AXIS2_OP_H
00019
00042 #include <axis2_param_container.h>
00043 #include <axis2_wsdl_op.h>
00044 #include <axis2_svc.h>
00045 #include <axis2_msg_recv.h>
00046 #include <axis2_array_list.h>
00047 #include <axis2_module_desc.h>
00048 #include <axis2_wsdl_msg_ref.h>
00049 #include <axis2_description.h>
00050 #include <axis2_phase_meta.h>
00051 #include <axis2_relates_to.h>
00052 #include <axis2_msg_ctx.h>
00053 #include <axis2_op_ctx.h>
00054 #include <axis2_svc_ctx.h>
00055
00056 #ifdef __cplusplus
00057 extern "C"
00058 {
00059 #endif
00060
00062 typedef struct axis2_op_ops axis2_op_ops_t;
00064 typedef struct axis2_op axis2_op_t;
00065
00066 struct axis2_wsdl_op;
00067 struct axis2_svc;
00068 struct axis2_msg_recv;
00069 struct axis2_param_container;
00070 struct axis2_module_desc;
00071 struct axis2_op;
00072 struct axis2_wsdl_feature;
00073 struct axis2_wsdl_property;
00074 struct axis2_wsdl_fault_ref;
00075 struct axis2_relates_to;
00076 struct axis2_op_ctx;
00077 struct axis2_svc_ctx;
00078 struct axis2_msg_ctx;
00079 struct axis2_msg;
00080 struct axis2_conf;
00081
00083 #define AXIS2_SOAP_ACTION "soapAction"
00084
00089 AXIS2_DECLARE_DATA struct axis2_op_ops
00090 {
00097 axis2_status_t (AXIS2_CALL *
00098 free)(
00099 axis2_op_t *op,
00100 const axis2_env_t *env);
00101
00108 axis2_status_t (AXIS2_CALL *
00109 free_void_arg)(
00110 void *op,
00111 const axis2_env_t *env);
00112
00113
00122 axis2_status_t (AXIS2_CALL *
00123 add_param)(
00124 axis2_op_t *op,
00125 const axis2_env_t *env,
00126 axis2_param_t *param);
00127
00136 axis2_param_t *(AXIS2_CALL *
00137 get_param)(
00138 const axis2_op_t *op,
00139 const axis2_env_t *env,
00140 const axis2_char_t *name);
00141
00149 axis2_array_list_t *(AXIS2_CALL *
00150 get_all_params)(
00151 const axis2_op_t *op,
00152 const axis2_env_t *env);
00153
00161 axis2_bool_t (AXIS2_CALL *
00162 is_param_locked)(
00163 axis2_op_t *op,
00164 const axis2_env_t *env,
00165 const axis2_char_t *param_name);
00166
00175 axis2_status_t (AXIS2_CALL *
00176 set_parent)(
00177 axis2_op_t *op,
00178 const axis2_env_t *env,
00179 struct axis2_svc *svc);
00180
00188 struct axis2_svc *(AXIS2_CALL *
00189 get_parent)(
00190 const axis2_op_t *op,
00191 const axis2_env_t *env);
00192
00202 axis2_status_t (AXIS2_CALL *
00203 set_qname)(
00204 axis2_op_t *op,
00205 const axis2_env_t *env,
00206 const axis2_qname_t *qname);
00207
00214 const axis2_qname_t *(AXIS2_CALL *
00215 get_qname)(
00216 void *op,
00217 const axis2_env_t *env);
00218
00226 axis2_status_t (AXIS2_CALL *
00227 set_msg_exchange_pattern)(
00228 axis2_op_t *op,
00229 const axis2_env_t *env,
00230 const axis2_char_t *pattern);
00231
00238 const axis2_char_t *(AXIS2_CALL *
00239 get_msg_exchange_pattern)(
00240 const axis2_op_t *op,
00241 const axis2_env_t *env);
00242
00252 axis2_status_t (AXIS2_CALL *
00253 set_msg_recv)(
00254 axis2_op_t *op,
00255 const axis2_env_t *env,
00256 struct axis2_msg_recv *msg_recv);
00257
00266 struct axis2_msg_recv *(AXIS2_CALL *
00267 get_msg_recv)(
00268 const axis2_op_t *op,
00269 const axis2_env_t *env);
00270
00278 const axis2_char_t *(AXIS2_CALL *
00279 get_style)(
00280 const axis2_op_t *op,
00281 const axis2_env_t *env);
00282
00291 axis2_status_t (AXIS2_CALL *
00292 set_style)(
00293 axis2_op_t *op,
00294 const axis2_env_t *env,
00295 const axis2_char_t *style);
00296
00307 axis2_status_t (AXIS2_CALL *
00308 engage_module)(
00309 axis2_op_t *op,
00310 const axis2_env_t *env,
00311 struct axis2_module_desc *module_desc,
00312 struct axis2_conf *conf);
00313
00322 axis2_status_t (AXIS2_CALL *
00323 add_to_engaged_module_list)(
00324 axis2_op_t *op,
00325 const axis2_env_t *env,
00326 struct axis2_module_desc *module_dec);
00327
00334 axis2_array_list_t *(AXIS2_CALL *
00335 get_all_modules)(
00336 const axis2_op_t *op,
00337 const axis2_env_t *env);
00338
00346 int (AXIS2_CALL *
00347 get_axis_specific_mep_const)(
00348 const axis2_op_t *op,
00349 const axis2_env_t *env);
00350
00359 axis2_array_list_t *(AXIS2_CALL *
00360 get_fault_in_flow)(
00361 const axis2_op_t *op,
00362 const axis2_env_t *env);
00363
00364
00373 axis2_array_list_t *(AXIS2_CALL *
00374 get_fault_out_flow)(
00375 const axis2_op_t *op,
00376 const axis2_env_t *env);
00377
00386 axis2_array_list_t *(AXIS2_CALL *
00387 get_out_flow)(
00388 const axis2_op_t *op,
00389 const axis2_env_t *env);
00390
00399 axis2_array_list_t *(AXIS2_CALL *
00400 get_in_flow)(
00401 const axis2_op_t *op,
00402 const axis2_env_t *env);
00403
00413 axis2_status_t (AXIS2_CALL *
00414 set_fault_in_flow)(
00415 axis2_op_t *op,
00416 const axis2_env_t *env,
00417 axis2_array_list_t *list);
00418
00428 axis2_status_t (AXIS2_CALL *
00429 set_fault_out_flow)(
00430 axis2_op_t *op,
00431 const axis2_env_t *env,
00432 axis2_array_list_t *list);
00433
00443 axis2_status_t (AXIS2_CALL *
00444 set_out_flow)(
00445 axis2_op_t *op,
00446 const axis2_env_t *env,
00447 axis2_array_list_t *list);
00457 axis2_status_t (AXIS2_CALL *
00458 set_in_flow)(
00459 axis2_op_t *op,
00460 const axis2_env_t *env,
00461 axis2_array_list_t *list);
00462
00471 axis2_status_t (AXIS2_CALL *
00472 add_module_qname)(
00473 axis2_op_t *op,
00474 const axis2_env_t *env,
00475 const axis2_qname_t *module_qname);
00476
00484 axis2_array_list_t *(AXIS2_CALL *
00485 get_all_module_qnames)(
00486 const axis2_op_t *op,
00487 const axis2_env_t *env);
00488
00496 axis2_linked_list_t *(AXIS2_CALL *
00497 get_all_in_faults)(
00498 const axis2_op_t *op,
00499 const axis2_env_t *env);
00500
00509 axis2_status_t (AXIS2_CALL *
00510 set_in_faults)(
00511 axis2_op_t *op,
00512 const axis2_env_t *env,
00513 axis2_linked_list_t *in_faults);
00514
00522 struct axis2_wsdl_msg_ref *(AXIS2_CALL *
00523 get_input_msg)(
00524 const axis2_op_t *op,
00525 const axis2_env_t *env);
00526
00535 axis2_status_t (AXIS2_CALL *
00536 set_input_msg)(
00537 axis2_op_t *op,
00538 const axis2_env_t *env,
00539 struct axis2_wsdl_msg_ref *input_msg);
00540
00548 axis2_linked_list_t *(AXIS2_CALL *
00549 get_all_out_faults)(
00550 const axis2_op_t *op,
00551 const axis2_env_t *env);
00552
00561 axis2_status_t (AXIS2_CALL *
00562 set_out_faults)(
00563 axis2_op_t *op,
00564 const axis2_env_t *env,
00565 axis2_linked_list_t *out_faults);
00566
00574 struct axis2_wsdl_msg_ref *(AXIS2_CALL *
00575 get_output_msg)(
00576 const axis2_op_t *op,
00577 const axis2_env_t *env);
00578
00587 axis2_status_t (AXIS2_CALL *
00588 set_output_msg)(
00589 axis2_op_t *op,
00590 const axis2_env_t *env,
00591 struct axis2_wsdl_msg_ref *output_msg);
00592
00599 const axis2_char_t *(AXIS2_CALL *
00600 get_target_namespace)(
00601 const axis2_op_t *op,
00602 const axis2_env_t *env);
00603
00612 axis2_status_t (AXIS2_CALL *
00613 add_in_fault)(
00614 axis2_op_t *op,
00615 const axis2_env_t *env,
00616 struct axis2_wsdl_fault_ref *in_fault);
00617
00626 axis2_status_t (AXIS2_CALL *
00627 add_out_fault)(
00628 axis2_op_t *op,
00629 const axis2_env_t *env,
00630 struct axis2_wsdl_fault_ref *out_fault);
00631
00640 axis2_status_t (AXIS2_CALL *
00641 add_feature)(
00642 axis2_op_t *op,
00643 const axis2_env_t *env,
00644 struct axis2_wsdl_feature *feature);
00645
00652 axis2_linked_list_t *(AXIS2_CALL *
00653 get_all_features)(
00654 const axis2_op_t *op,
00655 const axis2_env_t *env);
00656
00665 axis2_status_t (AXIS2_CALL *
00666 add_property)(
00667 axis2_op_t *op,
00668 const axis2_env_t *env,
00669 struct axis2_wsdl_property *wsdl_property);
00670
00678 axis2_linked_list_t *(AXIS2_CALL *
00679 get_all_properties)(
00680 const axis2_op_t *op,
00681 const axis2_env_t *env);
00682
00691 axis2_status_t (AXIS2_CALL *
00692 set_wsdl_op)(
00693 axis2_op_t *op,
00694 const axis2_env_t *env,
00695 struct axis2_wsdl_op *wsdl_op);
00696
00708 struct axis2_op_ctx *(AXIS2_CALL *
00709 find_op_ctx)(
00710 axis2_op_t *op,
00711 const axis2_env_t *env,
00712 struct axis2_msg_ctx *msg_ctx,
00713 struct axis2_svc_ctx *svc_ctx);
00714
00726 struct axis2_op_ctx *(AXIS2_CALL *
00727 find_existing_op_ctx)(
00728 axis2_op_t *op,
00729 const axis2_env_t *env,
00730 struct axis2_msg_ctx *msg_ctx);
00731
00743 axis2_status_t (AXIS2_CALL *
00744 register_op_ctx)(
00745 axis2_op_t *op,
00746 const axis2_env_t *env,
00747 struct axis2_msg_ctx *msg_ctx,
00748 struct axis2_op_ctx *op_ctx);
00749
00757 struct axis2_msg *(AXIS2_CALL *
00758 get_msg)(
00759 const axis2_op_t *op,
00760 const axis2_env_t *env,
00761 const axis2_char_t *label);
00762
00771 axis2_status_t (AXIS2_CALL *
00772 add_msg)(
00773 axis2_op_t *op,
00774 const axis2_env_t *env,
00775 const axis2_char_t *label,
00776 const struct axis2_msg *msg);
00777
00778 };
00779
00783 AXIS2_DECLARE_DATA struct axis2_op
00784 {
00786 axis2_wsdl_op_t base;
00788 axis2_op_ops_t *ops;
00790 struct axis2_param_container *param_container;
00791 };
00792
00798 AXIS2_EXTERN axis2_op_t *AXIS2_CALL
00799 axis2_op_create(
00800 const axis2_env_t *env);
00801
00808 AXIS2_EXTERN axis2_op_t *AXIS2_CALL
00809 axis2_op_create_with_qname(
00810 const axis2_env_t *env,
00811 const axis2_qname_t *name);
00812
00819 AXIS2_EXTERN axis2_op_t *AXIS2_CALL
00820 axis2_op_create_with_wsdl_op(
00821 const axis2_env_t *env,
00822 struct axis2_wsdl_op *wsdl_op);
00823
00831 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00832 axis2_op_free_void_arg(
00833 void *op,
00834 const axis2_env_t *env);
00835
00838 #define AXIS2_OP_FREE(op, env) \
00839 ((op)->ops->free (op, env))
00840
00843 #define AXIS2_OP_ADD_PARAM(op, env, param) \
00844 ((op)->ops->add_param (op, env, param))
00845
00848 #define AXIS2_OP_GET_PARAM(op, env, key) \
00849 ((op)->ops->get_param (op, env, key))
00850
00853 #define AXIS2_OP_GET_ALL_PARAMS(op, env) \
00854 ((op)->ops->get_all_params (op, env))
00855
00858 #define AXIS2_OP_IS_PARAM_LOCKED(op, env, param_name) \
00859 ((op)->ops->is_param_locked(op, env, param_name))
00860
00863 #define AXIS2_OP_SET_PARENT(op, env, service_desc) \
00864 ((op)->ops->set_parent (op, env, service_desc))
00865
00868 #define AXIS2_OP_GET_PARENT(op, env) \
00869 ((op)->ops->get_parent (op, env))
00870
00873 #define AXIS2_OP_SET_MSG_RECV(op, env, msg_recv) \
00874 ((op)->ops->set_msg_recv (op, env, msg_recv))
00875
00878 #define AXIS2_OP_GET_MSG_RECV(op, env) \
00879 ((op)->ops->get_msg_recv (op, env))
00880
00883 #define AXIS2_OP_SET_QNAME(op, env, qname) \
00884 ((op)->ops->set_qname (op, env, qname))
00885
00888 #define AXIS2_OP_GET_QNAME(op, env) \
00889 (((axis2_op_t *) op)->ops->get_qname (op, env))
00890
00893 #define AXIS2_OP_SET_MSG_EXCHANGE_PATTERN(op , env, \
00894 msg_exchange_pattern) \
00895 ((op)->ops->set_msg_exchange_pattern (op, env, \
00896 msg_exchange_pattern))
00897
00900 #define AXIS2_OP_GET_MSG_EXCHANGE_PATTERN(op, env) \
00901 ((op)->ops->get_msg_exchange_pattern (op, env))
00902
00905 #define AXIS2_OP_GET_STYLE(op, env) \
00906 ((op)->ops->get_style (op, env))
00907
00910 #define AXIS2_OP_SET_STYLE(op, env, style) \
00911 ((op)->ops->set_style (op, env, style))
00912
00915 #define AXIS2_OP_ENGAGE_MODULE(op, env, moduleref, conf) \
00916 ((op)->ops->engage_module (op, env, moduleref, conf))
00917
00920 #define AXIS2_OP_ADD_TO_ENGAGED_MODULE_LIST(op, env, module_name) \
00921 ((op)->ops->add_to_engaged_module_list (op, env, module_name))
00922
00925 #define AXIS2_OP_GET_ALL_MODULES(op, env) \
00926 ((op)->ops->get_all_modules (op, env))
00927
00930 #define AXIS2_OP_GET_AXIS_SPECIFIC_MEP_CONST(op, env) \
00931 ((op)->ops->get_axis_specific_mep_const (op, env))
00932
00935 #define AXIS2_OP_GET_FAULT_IN_FLOW(op, env) \
00936 ((op)->ops->get_fault_in_flow (op, env))
00937
00940 #define AXIS2_OP_GET_FAULT_OUT_FLOW(op, env) \
00941 ((op)->ops->get_fault_out_flow (op, env))
00942
00945 #define AXIS2_OP_GET_OUT_FLOW(op, env) \
00946 ((op)->ops->get_out_flow (op, env))
00947
00950 #define AXIS2_OP_GET_IN_FLOW(op, env) \
00951 ((op)->ops->get_in_flow (op, env))
00952
00955 #define AXIS2_OP_SET_FAULT_IN_FLOW(op, env, list) \
00956 ((op)->ops->set_fault_in_flow (op, env, list))
00957
00960 #define AXIS2_OP_SET_FAULT_OUT_FLOW(op, env, list) \
00961 ((op)->ops->set_fault_out_flow (op, env, list))
00962
00965 #define AXIS2_OP_SET_OUT_FLOW(op, env, list) \
00966 ((op)->ops->set_out_flow (op, env, list))
00967
00970 #define AXIS2_OP_SET_IN_FLOW(op, env, list) \
00971 ((op)->ops->set_in_flow (op, env, list))
00972
00975 #define AXIS2_OP_ADD_MODULE_QNAME(op, env, module_name) \
00976 ((op)->ops->add_module_qname (op, env, module_name))
00977
00980 #define AXIS2_OP_GET_ALL_MODULE_QNAMES(op, env) \
00981 ((op)->ops->get_all_module_qnames (op, env))
00982
00985 #define AXIS2_OP_GET_ALL_IN_FAULTS(op, env) \
00986 ((op)->ops->get_all_in_faults (op, env))
00987
00990 #define AXIS2_OP_SET_IN_FAULTS(op, env) \
00991 ((op)->ops->set_in_faults (op, env, in_faults))
00992
00995 #define AXIS2_OP_GET_INPUT_MSG(op, env) \
00996 ((op)->ops->get_input_msg (op, env))
00997
01000 #define AXIS2_OP_SET_INPUT_MSG(op, env) \
01001 ((op)->ops->set_input_msg (op, env, input_msg))
01002
01005 #define AXIS2_OP_GET_ALL_OUT_FAULTS(op, env) \
01006 ((op)->ops->get_all_out_faults (op, env))
01007
01010 #define AXIS2_OP_SET_OUT_FAULTS(op, env) \
01011 ((op)->ops->set_out_faults (op, env, out_faults))
01012
01015 #define AXIS2_OP_GET_OUTPUT_MSG(op, env) \
01016 ((op)->ops->get_output_msg (op, env))
01017
01020 #define AXIS2_OP_SET_OUTPUT_MSG(op, env) \
01021 ((op)->ops->set_output_msg (op, env, output_msg))
01022
01025 #define AXIS2_OP_GET_TARGET_NAMESPACE(op, env) \
01026 ((op)->ops->get_target_namespace (op, env))
01027
01030 #define AXIS2_OP_ADD_IN_FAULT(op, env, in_fault) \
01031 ((op)->ops->add_in_fault (op, env, in_fault))
01032
01035 #define AXIS2_OP_ADD_OUT_FAULT(op, env, out_fault) \
01036 ((op)->ops->add_out_fault (op, env, out_fault))
01037
01040 #define AXIS2_OP_ADD_FEATURE(op, env, feature) \
01041 ((op)->ops->add_feature (op, env, feature))
01042
01045 #define AXIS2_OP_GET_ALL_FEATURES(op, env) \
01046 ((op)->ops->get_all_features(op, env))
01047
01050 #define AXIS2_OP_ADD_PROPERTY(op, env, wsdl_property) \
01051 ((op)->ops->add_property (op, env, wsdl_property))
01052
01055 #define AXIS2_OP_GET_ALL_PROPERTIES(op, env) \
01056 ((op)->ops->get_all_properties (op, env))
01057
01060 #define AXIS2_OP_SET_WSDL_OP(op, env, wsdl_op) \
01061 ((op)->ops->set_wsdl_op (op, env, wsdl_op))
01062
01063
01066 #define AXIS2_OP_FIND_OP_CTX(op, env, msg_ctx, svc_ctx) \
01067 ((op)->ops->find_op_ctx (op, env, msg_ctx, svc_ctx))
01068
01071 #define AXIS2_OP_FIND_FOR_EXISTING_OP_CTX(op, env, wsdl_op) \
01072 ((op)->ops->find_existing_op_ctx (op, env, wsdl_op))
01073
01076 #define AXIS2_OP_REGISTER_OP_CTX(op, env, msg_ctx, wsdl_op) \
01077 ((op)->ops->register_op_ctx (op, env, msg_ctx, wsdl_op))
01078
01081 #define AXIS2_OP_GET_MSG(op, env, label) \
01082 ((op)->ops->get_msg(op, env, label))
01083
01086 #define AXIS2_OP_ADD_MSG(op, env, label, msg) \
01087 ((op)->ops->add_msg(op, env, label, msg))
01088
01090 #ifdef __cplusplus
01091 }
01092 #endif
01093 #endif