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 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
00784 axis2_bool_t (AXIS2_CALL *
00785 is_from_module)(
00786 const axis2_op_t *op,
00787 const axis2_env_t *env);
00788 };
00789
00793 struct axis2_op
00794 {
00796 axis2_wsdl_op_t base;
00798 axis2_op_ops_t *ops;
00800 struct axis2_param_container *param_container;
00801 };
00802
00808 AXIS2_EXTERN axis2_op_t *AXIS2_CALL
00809 axis2_op_create(
00810 const axis2_env_t *env);
00811
00817 AXIS2_EXTERN axis2_op_t *AXIS2_CALL
00818 axis2_op_create_from_module(
00819 const axis2_env_t *env);
00820
00827 AXIS2_EXTERN axis2_op_t *AXIS2_CALL
00828 axis2_op_create_with_qname(
00829 const axis2_env_t *env,
00830 const axis2_qname_t *name);
00831
00838 AXIS2_EXTERN axis2_op_t *AXIS2_CALL
00839 axis2_op_create_with_wsdl_op(
00840 const axis2_env_t *env,
00841 struct axis2_wsdl_op *wsdl_op);
00842
00850 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00851 axis2_op_free_void_arg(
00852 void *op,
00853 const axis2_env_t *env);
00854
00857 #define AXIS2_OP_FREE(op, env) \
00858 ((op)->ops->free (op, env))
00859
00862 #define AXIS2_OP_ADD_PARAM(op, env, param) \
00863 ((op)->ops->add_param (op, env, param))
00864
00867 #define AXIS2_OP_GET_PARAM(op, env, key) \
00868 ((op)->ops->get_param (op, env, key))
00869
00872 #define AXIS2_OP_GET_ALL_PARAMS(op, env) \
00873 ((op)->ops->get_all_params (op, env))
00874
00877 #define AXIS2_OP_IS_PARAM_LOCKED(op, env, param_name) \
00878 ((op)->ops->is_param_locked(op, env, param_name))
00879
00882 #define AXIS2_OP_SET_PARENT(op, env, service_desc) \
00883 ((op)->ops->set_parent (op, env, service_desc))
00884
00887 #define AXIS2_OP_GET_PARENT(op, env) \
00888 ((op)->ops->get_parent (op, env))
00889
00892 #define AXIS2_OP_SET_MSG_RECV(op, env, msg_recv) \
00893 ((op)->ops->set_msg_recv (op, env, msg_recv))
00894
00897 #define AXIS2_OP_GET_MSG_RECV(op, env) \
00898 ((op)->ops->get_msg_recv (op, env))
00899
00902 #define AXIS2_OP_SET_QNAME(op, env, qname) \
00903 ((op)->ops->set_qname (op, env, qname))
00904
00907 #define AXIS2_OP_GET_QNAME(op, env) \
00908 (((axis2_op_t *) op)->ops->get_qname (op, env))
00909
00912 #define AXIS2_OP_SET_MSG_EXCHANGE_PATTERN(op , env, \
00913 msg_exchange_pattern) \
00914 ((op)->ops->set_msg_exchange_pattern (op, env, \
00915 msg_exchange_pattern))
00916
00919 #define AXIS2_OP_GET_MSG_EXCHANGE_PATTERN(op, env) \
00920 ((op)->ops->get_msg_exchange_pattern (op, env))
00921
00924 #define AXIS2_OP_GET_STYLE(op, env) \
00925 ((op)->ops->get_style (op, env))
00926
00929 #define AXIS2_OP_SET_STYLE(op, env, style) \
00930 ((op)->ops->set_style (op, env, style))
00931
00934 #define AXIS2_OP_ENGAGE_MODULE(op, env, moduleref, conf) \
00935 ((op)->ops->engage_module (op, env, moduleref, conf))
00936
00939 #define AXIS2_OP_ADD_TO_ENGAGED_MODULE_LIST(op, env, module_name) \
00940 ((op)->ops->add_to_engaged_module_list (op, env, module_name))
00941
00944 #define AXIS2_OP_GET_ALL_MODULES(op, env) \
00945 ((op)->ops->get_all_modules (op, env))
00946
00949 #define AXIS2_OP_GET_AXIS_SPECIFIC_MEP_CONST(op, env) \
00950 ((op)->ops->get_axis_specific_mep_const (op, env))
00951
00954 #define AXIS2_OP_GET_FAULT_IN_FLOW(op, env) \
00955 ((op)->ops->get_fault_in_flow (op, env))
00956
00959 #define AXIS2_OP_GET_FAULT_OUT_FLOW(op, env) \
00960 ((op)->ops->get_fault_out_flow (op, env))
00961
00964 #define AXIS2_OP_GET_OUT_FLOW(op, env) \
00965 ((op)->ops->get_out_flow (op, env))
00966
00969 #define AXIS2_OP_GET_IN_FLOW(op, env) \
00970 ((op)->ops->get_in_flow (op, env))
00971
00974 #define AXIS2_OP_SET_FAULT_IN_FLOW(op, env, list) \
00975 ((op)->ops->set_fault_in_flow (op, env, list))
00976
00979 #define AXIS2_OP_SET_FAULT_OUT_FLOW(op, env, list) \
00980 ((op)->ops->set_fault_out_flow (op, env, list))
00981
00984 #define AXIS2_OP_SET_OUT_FLOW(op, env, list) \
00985 ((op)->ops->set_out_flow (op, env, list))
00986
00989 #define AXIS2_OP_SET_IN_FLOW(op, env, list) \
00990 ((op)->ops->set_in_flow (op, env, list))
00991
00994 #define AXIS2_OP_ADD_MODULE_QNAME(op, env, module_name) \
00995 ((op)->ops->add_module_qname (op, env, module_name))
00996
00999 #define AXIS2_OP_GET_ALL_MODULE_QNAMES(op, env) \
01000 ((op)->ops->get_all_module_qnames (op, env))
01001
01004 #define AXIS2_OP_GET_ALL_IN_FAULTS(op, env) \
01005 ((op)->ops->get_all_in_faults (op, env))
01006
01009 #define AXIS2_OP_SET_IN_FAULTS(op, env) \
01010 ((op)->ops->set_in_faults (op, env, in_faults))
01011
01014 #define AXIS2_OP_GET_INPUT_MSG(op, env) \
01015 ((op)->ops->get_input_msg (op, env))
01016
01019 #define AXIS2_OP_SET_INPUT_MSG(op, env) \
01020 ((op)->ops->set_input_msg (op, env, input_msg))
01021
01024 #define AXIS2_OP_GET_ALL_OUT_FAULTS(op, env) \
01025 ((op)->ops->get_all_out_faults (op, env))
01026
01029 #define AXIS2_OP_SET_OUT_FAULTS(op, env) \
01030 ((op)->ops->set_out_faults (op, env, out_faults))
01031
01034 #define AXIS2_OP_GET_OUTPUT_MSG(op, env) \
01035 ((op)->ops->get_output_msg (op, env))
01036
01039 #define AXIS2_OP_SET_OUTPUT_MSG(op, env) \
01040 ((op)->ops->set_output_msg (op, env, output_msg))
01041
01044 #define AXIS2_OP_GET_TARGET_NAMESPACE(op, env) \
01045 ((op)->ops->get_target_namespace (op, env))
01046
01049 #define AXIS2_OP_ADD_IN_FAULT(op, env, in_fault) \
01050 ((op)->ops->add_in_fault (op, env, in_fault))
01051
01054 #define AXIS2_OP_ADD_OUT_FAULT(op, env, out_fault) \
01055 ((op)->ops->add_out_fault (op, env, out_fault))
01056
01059 #define AXIS2_OP_ADD_FEATURE(op, env, feature) \
01060 ((op)->ops->add_feature (op, env, feature))
01061
01064 #define AXIS2_OP_GET_ALL_FEATURES(op, env) \
01065 ((op)->ops->get_all_features(op, env))
01066
01069 #define AXIS2_OP_ADD_PROPERTY(op, env, wsdl_property) \
01070 ((op)->ops->add_property (op, env, wsdl_property))
01071
01074 #define AXIS2_OP_GET_ALL_PROPERTIES(op, env) \
01075 ((op)->ops->get_all_properties (op, env))
01076
01079 #define AXIS2_OP_SET_WSDL_OP(op, env, wsdl_op) \
01080 ((op)->ops->set_wsdl_op (op, env, wsdl_op))
01081
01082
01085 #define AXIS2_OP_FIND_OP_CTX(op, env, msg_ctx, svc_ctx) \
01086 ((op)->ops->find_op_ctx (op, env, msg_ctx, svc_ctx))
01087
01090 #define AXIS2_OP_FIND_FOR_EXISTING_OP_CTX(op, env, wsdl_op) \
01091 ((op)->ops->find_existing_op_ctx (op, env, wsdl_op))
01092
01095 #define AXIS2_OP_REGISTER_OP_CTX(op, env, msg_ctx, wsdl_op) \
01096 ((op)->ops->register_op_ctx (op, env, msg_ctx, wsdl_op))
01097
01100 #define AXIS2_OP_GET_MSG(op, env, label) \
01101 ((op)->ops->get_msg(op, env, label))
01102
01105 #define AXIS2_OP_ADD_MSG(op, env, label, msg) \
01106 ((op)->ops->add_msg(op, env, label, msg))
01107
01110 #define AXIS2_OP_IS_FROM_MODULE(op, env) \
01111 ((op)->ops->is_from_module(op, env))
01112
01114 #ifdef __cplusplus
01115 }
01116 #endif
01117 #endif