Modified: webservices/sandesha/trunk/c/src/util/sandesha2_utils.c URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/util/sandesha2_utils.c?view=diff&rev=491758&r1=491757&r2=491758 ============================================================================== --- webservices/sandesha/trunk/c/src/util/sandesha2_utils.c (original) +++ webservices/sandesha/trunk/c/src/util/sandesha2_utils.c Mon Jan 1 23:57:33 2007 @@ -509,34 +509,32 @@ { axis2_property_t *property = NULL; axis2_ctx_t *ctx = AXIS2_CONF_CTX_GET_BASE(conf_ctx, env); + /*axis2_array_list_t *storage_mgr_list = axis2_array_list_create(env, 0);*/ + sandesha2_storage_mgr_t *storage_mgr = NULL; AXIS2_ENV_CHECK(env, NULL); AXIS2_PARAM_CHECK(env->error, conf_ctx, NULL); - - property = AXIS2_CTX_GET_PROPERTY(ctx, env, SANDESHA2_PERMANENT_STORAGE_MGR, + + property = AXIS2_CTX_GET_PROPERTY(ctx, env, SANDESHA2_PERMANENT_STORAGE_MGR, AXIS2_FALSE); - - if(property && AXIS2_PROPERTY_GET_VALUE(property, env)) - { - sandesha2_storage_mgr_t *storage_mgr = NULL; - storage_mgr = (sandesha2_storage_mgr_t*)AXIS2_PROPERTY_GET_VALUE( - property, env); - return storage_mgr; - } + if(property) + storage_mgr = AXIS2_PROPERTY_GET_VALUE(property, env); else - { - sandesha2_storage_mgr_t *storage_mgr = - sandesha2_permanent_storage_mgr_create(env, conf_ctx); - property = axis2_property_create(env); - AXIS2_PROPERTY_SET_SCOPE(property, env, AXIS2_SCOPE_APPLICATION); - AXIS2_PROPERTY_SET_VALUE(property, env, storage_mgr); - AXIS2_PROPERTY_SET_FREE_FUNC(property, env, - sandesha2_storage_mgr_free_void_arg); - AXIS2_CTX_SET_PROPERTY(ctx, env, SANDESHA2_PERMANENT_STORAGE_MGR, - property, AXIS2_FALSE); - return storage_mgr; - } - return NULL; + storage_mgr = sandesha2_permanent_storage_mgr_create(env, conf_ctx); + property = axis2_property_create_with_args(env, AXIS2_SCOPE_APPLICATION, 0, + storage_mgr); + AXIS2_CTX_SET_PROPERTY(ctx, env, SANDESHA2_PERMANENT_STORAGE_MGR, + property, AXIS2_FALSE); + /*if(property) + storage_mgr_list = AXIS2_PROPERTY_GET_VALUE(property, env); + sandesha2_storage_mgr_t *storage_mgr = + sandesha2_permanent_storage_mgr_create(env, conf_ctx); + AXIS2_ARRAY_LIST_ADD(storage_mgr_list, env, storage_mgr); + property = axis2_property_create_with_args(env, AXIS2_SCOPE_APPLICATION, 0, + storage_mgr_list); + AXIS2_CTX_SET_PROPERTY(ctx, env, SANDESHA2_PERMANENT_STORAGE_MGR, + property, AXIS2_FALSE);*/ + return storage_mgr; } AXIS2_EXTERN axis2_char_t* AXIS2_CALL @@ -1307,5 +1305,29 @@ return AXIS2_TRUE; return AXIS2_FALSE; +} + +axis2_array_list_t *AXIS2_CALL +sandesha2_utils_split( + const axis2_env_t *env, + axis2_char_t *str, + axis2_char_t *pattern) +{ + axis2_array_list_t *list = axis2_array_list_create(env, 0); + axis2_char_t *ptr = NULL; + axis2_char_t *value = NULL; + ptr = AXIS2_STRSTR(str, pattern); + while(ptr) + { + ptr[0] = AXIS2_EOLN; + value = AXIS2_STRDUP(str, env); + AXIS2_ARRAY_LIST_ADD(list, env, value); + str = ptr + 3; + ptr = AXIS2_STRSTR(str, pattern); + } + value = AXIS2_STRDUP(str, env); + AXIS2_ARRAY_LIST_ADD(list, env, value); + + return list; }
Modified: webservices/sandesha/trunk/c/src/util/terminate_mgr.c URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/util/terminate_mgr.c?view=diff&rev=491758&r1=491757&r2=491758 ============================================================================== --- webservices/sandesha/trunk/c/src/util/terminate_mgr.c (original) +++ webservices/sandesha/trunk/c/src/util/terminate_mgr.c Mon Jan 1 23:57:33 2007 @@ -34,16 +34,44 @@ #include <axis2_array_list.h> #include <axis2_engine.h> #include <sandesha2_msg_creator.h> +#include <sandesha2_rm_bean.h> #include <axis2_transport_out_desc.h> axis2_hash_t *sandesha2_terminate_mgr_rcv_side_clean_map = NULL; +static axis2_status_t +sandesha2_terminate_mgr_clean_sending_side_data( + const axis2_env_t *env, + axis2_conf_ctx_t *conf_ctx, + axis2_char_t *seq_id, + axis2_bool_t svr_side, + sandesha2_storage_mgr_t *storage_mgr); + +static axis2_status_t +sandesha2_terminate_mgr_complete_termination_of_recv_side( + const axis2_env_t *env, + axis2_conf_ctx_t *conf_ctx, + axis2_char_t *seq_id, + sandesha2_storage_mgr_t *storage_mgr); + +static axis2_status_t +sandesha2_terminate_mgr_remove_recv_side_properties( + const axis2_env_t *env, + axis2_conf_ctx_t *conf_ctx, + axis2_char_t *seq_id, + sandesha2_storage_mgr_t *storage_mgr); + +static axis2_bool_t +sandesha2_terminate_mgr_is_property_deletable( + const axis2_env_t *env, + axis2_char_t *name); + AXIS2_EXTERN axis2_status_t AXIS2_CALL sandesha2_terminate_mgr_clean_recv_side_after_terminate_msg( const axis2_env_t *env, axis2_conf_ctx_t *conf_ctx, axis2_char_t *seq_id, - sandesha2_storage_mgr_t *storage_man) + sandesha2_storage_mgr_t *storage_mgr) { axis2_bool_t in_order_invoke = AXIS2_FALSE; sandesha2_property_bean_t *prop_bean = NULL; @@ -52,9 +80,9 @@ AXIS2_ENV_CHECK(env, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, conf_ctx, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, seq_id, AXIS2_FAILURE); - AXIS2_PARAM_CHECK(env->error, storage_man, AXIS2_FAILURE); + AXIS2_PARAM_CHECK(env->error, storage_mgr, AXIS2_FAILURE); - if(NULL == sandesha2_terminate_mgr_rcv_side_clean_map) + if(!sandesha2_terminate_mgr_rcv_side_clean_map) { sandesha2_terminate_mgr_rcv_side_clean_map = axis2_hash_make(env); } @@ -62,15 +90,15 @@ prop_bean = sandesha2_utils_get_property_bean(env, AXIS2_CONF_CTX_GET_CONF( conf_ctx, env)); in_order_invoke = sandesha2_property_bean_is_in_order(prop_bean, env); - if(AXIS2_FALSE == in_order_invoke) + if(!in_order_invoke) sandesha2_terminate_mgr_clean_recv_side_after_invocation(env, conf_ctx, - seq_id, storage_man); + seq_id, storage_mgr); clean_status = axis2_hash_get(sandesha2_terminate_mgr_rcv_side_clean_map, seq_id, AXIS2_HASH_KEY_STRING); - if(NULL != clean_status && 0 == AXIS2_STRCMP(clean_status, + if(clean_status && 0 == AXIS2_STRCMP(clean_status, SANDESHA2_CLEANED_AFTER_INVOCATION)) - sandesha2_terminate_mgr_complete_term_on_recv_side(env, conf_ctx, seq_id, - storage_man); + sandesha2_terminate_mgr_complete_termination_of_recv_side(env, conf_ctx, seq_id, + storage_mgr); else axis2_hash_set(sandesha2_terminate_mgr_rcv_side_clean_map, seq_id, AXIS2_HASH_KEY_STRING, AXIS2_STRDUP( @@ -83,7 +111,7 @@ const axis2_env_t *env, axis2_conf_ctx_t *conf_ctx, axis2_char_t *seq_id, - sandesha2_storage_mgr_t *storage_man) + sandesha2_storage_mgr_t *storage_mgr) { sandesha2_invoker_mgr_t *invoker_mgr = NULL; sandesha2_invoker_bean_t *find_bean = NULL; @@ -94,14 +122,14 @@ AXIS2_ENV_CHECK(env, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, conf_ctx, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, seq_id, AXIS2_FAILURE); - AXIS2_PARAM_CHECK(env->error, storage_man, AXIS2_FAILURE); + AXIS2_PARAM_CHECK(env->error, storage_mgr, AXIS2_FAILURE); if(NULL == sandesha2_terminate_mgr_rcv_side_clean_map) { sandesha2_terminate_mgr_rcv_side_clean_map = axis2_hash_make(env); } - invoker_mgr = sandesha2_storage_mgr_get_storage_map_mgr(storage_man, env); + invoker_mgr = sandesha2_storage_mgr_get_storage_map_mgr(storage_mgr, env); find_bean = sandesha2_invoker_bean_create(env); sandesha2_invoker_bean_set_seq_id(find_bean, env, seq_id); @@ -116,7 +144,7 @@ map_bean = AXIS2_ARRAY_LIST_GET(found_list, env, i); msg_store_key = sandesha2_invoker_bean_get_msg_ctx_ref_key( (sandesha2_rm_bean_t *) map_bean, env); - sandesha2_storage_mgr_remove_msg_ctx(storage_man, env, msg_store_key); + sandesha2_storage_mgr_remove_msg_ctx(storage_mgr, env, msg_store_key); sandesha2_invoker_mgr_remove(invoker_mgr, env, sandesha2_invoker_bean_get_msg_ctx_ref_key((sandesha2_rm_bean_t *) map_bean, env)); @@ -126,8 +154,8 @@ if(NULL != clean_status && 0 == AXIS2_STRCMP(clean_status, SANDESHA2_CLEANED_ON_TERMINATE_MSG)) - sandesha2_terminate_mgr_complete_term_on_recv_side(env, conf_ctx, seq_id, - storage_man); + sandesha2_terminate_mgr_complete_termination_of_recv_side(env, conf_ctx, seq_id, + storage_mgr); else axis2_hash_set(sandesha2_terminate_mgr_rcv_side_clean_map, seq_id, AXIS2_HASH_KEY_STRING, AXIS2_STRDUP( @@ -137,46 +165,69 @@ return AXIS2_SUCCESS; } -AXIS2_EXTERN axis2_status_t AXIS2_CALL -sandesha2_terminate_mgr_complete_term_on_recv_side( +static axis2_status_t +sandesha2_terminate_mgr_complete_termination_of_recv_side( const axis2_env_t *env, axis2_conf_ctx_t *conf_ctx, axis2_char_t *seq_id, - sandesha2_storage_mgr_t *storage_man) + sandesha2_storage_mgr_t *storage_mgr) { sandesha2_next_msg_mgr_t *next_mgr = NULL; sandesha2_next_msg_bean_t *find_bean = NULL; axis2_array_list_t *found_list = NULL; axis2_char_t *highest_in_msg_key = NULL; + int i = 0, size = 0; AXIS2_ENV_CHECK(env, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, conf_ctx, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, seq_id, AXIS2_FAILURE); - AXIS2_PARAM_CHECK(env->error, storage_man, AXIS2_FAILURE); + AXIS2_PARAM_CHECK(env->error, storage_mgr, AXIS2_FAILURE); - next_mgr = sandesha2_storage_mgr_get_next_msg_mgr(storage_man, env); + next_mgr = sandesha2_storage_mgr_get_next_msg_mgr(storage_mgr, env); find_bean = sandesha2_next_msg_bean_create(env); - sandesha2_next_msg_bean_set_seq_id(find_bean, env, seq_id); + /* test comment */ + /*sandesha2_next_msg_bean_set_seq_id(find_bean, env, seq_id);*/ found_list = sandesha2_next_msg_mgr_find(next_mgr, env, find_bean); - + if(found_list) + size = AXIS2_ARRAY_LIST_SIZE(found_list, env); + for(i = 0; i < size; i++) + { + sandesha2_next_msg_bean_t *bean = AXIS2_ARRAY_LIST_GET(found_list, + env, i); + if(bean) + { + axis2_char_t *key = NULL; + axis2_char_t *seq_id = NULL; + key = sandesha2_next_msg_bean_get_ref_msg_key(bean, env); + if(key) + sandesha2_storage_mgr_remove_msg_ctx(storage_mgr, env, key); + /*test code */ + seq_id = sandesha2_next_msg_bean_get_seq_id((sandesha2_rm_bean_t *) + bean, env); + sandesha2_next_msg_mgr_remove(next_mgr, env, seq_id); + /* end test code */ + } + } highest_in_msg_key = sandesha2_utils_get_seq_property(env, seq_id, - SANDESHA2_SEQ_PROP_HIGHEST_IN_MSG_KEY, storage_man); - if(NULL != highest_in_msg_key) - sandesha2_storage_mgr_remove_msg_ctx(storage_man, env, - highest_in_msg_key); - sandesha2_terminate_mgr_remove_recv_side_propertis(env, conf_ctx, seq_id, - storage_man); + SANDESHA2_SEQ_PROP_HIGHEST_IN_MSG_KEY, storage_mgr); + if(highest_in_msg_key) + { + sandesha2_storage_mgr_remove_msg_ctx(storage_mgr, env, + highest_in_msg_key); + } + sandesha2_terminate_mgr_remove_recv_side_properties(env, conf_ctx, seq_id, + storage_mgr); return AXIS2_SUCCESS; } -AXIS2_EXTERN axis2_status_t AXIS2_CALL -sandesha2_terminate_mgr_remove_recv_side_propertis( +static axis2_status_t +sandesha2_terminate_mgr_remove_recv_side_properties( const axis2_env_t *env, axis2_conf_ctx_t *conf_ctx, axis2_char_t *seq_id, - sandesha2_storage_mgr_t *storage_man) + sandesha2_storage_mgr_t *storage_mgr) { sandesha2_seq_property_mgr_t *seq_prop_mgr = NULL; sandesha2_seq_property_bean_t *all_seq_bean = NULL; @@ -184,21 +235,19 @@ AXIS2_ENV_CHECK(env, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, conf_ctx, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, seq_id, AXIS2_FAILURE); - AXIS2_PARAM_CHECK(env->error, storage_man, AXIS2_FAILURE); + AXIS2_PARAM_CHECK(env->error, storage_mgr, AXIS2_FAILURE); - seq_prop_mgr = sandesha2_storage_mgr_get_seq_property_mgr(storage_man, env); + seq_prop_mgr = sandesha2_storage_mgr_get_seq_property_mgr(storage_mgr, env); all_seq_bean = sandesha2_seq_property_mgr_retrieve(seq_prop_mgr, env, - SANDESHA2_SEQ_PROP_ALL_SEQS, - SANDESHA2_SEQ_PROP_INCOMING_SEQ_LIST); - if(NULL != all_seq_bean) + SANDESHA2_SEQ_PROP_ALL_SEQS, SANDESHA2_SEQ_PROP_INCOMING_SEQ_LIST); + if(all_seq_bean) { axis2_array_list_t *all_seq_list = NULL; axis2_char_t *all_seq_str = NULL; all_seq_list = sandesha2_utils_get_array_list_from_string(env, - sandesha2_seq_property_bean_get_value(all_seq_bean, - env)); - if(NULL != all_seq_list) + sandesha2_seq_property_bean_get_value(all_seq_bean, env)); + if(all_seq_list) { int i = 0; for(i = 0; i < AXIS2_ARRAY_LIST_SIZE(all_seq_list, env); i++) @@ -211,12 +260,11 @@ } } all_seq_str = sandesha2_utils_array_list_to_string(env, all_seq_list, - SANDESHA2_ARRAY_LIST_STRING); + SANDESHA2_ARRAY_LIST_STRING); sandesha2_seq_property_bean_set_value(all_seq_bean, env, all_seq_str); sandesha2_seq_property_mgr_update(seq_prop_mgr, env, all_seq_bean); } - } - + } return AXIS2_SUCCESS; } @@ -226,23 +274,22 @@ axis2_conf_ctx_t *conf_ctx, axis2_char_t *seq_id, axis2_bool_t svr_side, - sandesha2_storage_mgr_t *storage_man) + sandesha2_storage_mgr_t *storage_mgr) { sandesha2_seq_property_mgr_t *seq_prop_mgr = NULL; sandesha2_seq_property_bean_t *seq_term_bean = NULL; - AXIS2_ENV_CHECK(env, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, conf_ctx, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, seq_id, AXIS2_FAILURE); - AXIS2_PARAM_CHECK(env->error, storage_man, AXIS2_FAILURE); + AXIS2_PARAM_CHECK(env->error, storage_mgr, AXIS2_FAILURE); - seq_prop_mgr = sandesha2_storage_mgr_get_seq_property_mgr(storage_man, env); + seq_prop_mgr = sandesha2_storage_mgr_get_seq_property_mgr(storage_mgr, env); seq_term_bean = sandesha2_seq_property_bean_create_with_data(env, seq_id, SANDESHA2_SEQ_PROP_SEQ_TERMINATED, SANDESHA2_VALUE_TRUE); sandesha2_seq_property_mgr_insert(seq_prop_mgr, env, seq_term_bean); sandesha2_terminate_mgr_clean_sending_side_data(env, conf_ctx, seq_id, - svr_side, storage_man); + svr_side, storage_mgr); return AXIS2_SUCCESS; } @@ -290,29 +337,31 @@ return AXIS2_SUCCESS; } -AXIS2_EXTERN axis2_bool_t AXIS2_CALL +static axis2_bool_t sandesha2_terminate_mgr_is_property_deletable( const axis2_env_t *env, axis2_char_t *name) { axis2_bool_t deletable = AXIS2_TRUE; + axis2_char_t *name_l = NULL; AXIS2_ENV_CHECK(env, AXIS2_FALSE); AXIS2_PARAM_CHECK(env->error, name, AXIS2_FALSE); + name_l = axis2_strtrim(env, name, NULL); - if(0 == AXIS2_STRCMP(name, SANDESHA2_SEQ_PROP_TERMINATE_ADDED)) + if(0 == axis2_strcasecmp(name_l, SANDESHA2_SEQ_PROP_TERMINATE_ADDED)) deletable = AXIS2_FALSE; - if(0 == AXIS2_STRCMP(name, SANDESHA2_SEQ_PROP_NO_OF_OUTGOING_MSGS_ACKED)) + if(0 == axis2_strcasecmp(name_l, SANDESHA2_SEQ_PROP_NO_OF_OUTGOING_MSGS_ACKED)) deletable = AXIS2_FALSE; - if(0 == AXIS2_STRCMP(name, SANDESHA2_SEQ_PROP_INTERNAL_SEQ_ID)) + if(0 == axis2_strcasecmp(name_l, SANDESHA2_SEQ_PROP_INTERNAL_SEQ_ID)) deletable = AXIS2_FALSE; - if(0 == AXIS2_STRCMP(name, SANDESHA2_SEQ_PROP_SEQ_TERMINATED)) + if(0 == axis2_strcasecmp(name_l, SANDESHA2_SEQ_PROP_SEQ_TERMINATED)) deletable = AXIS2_FALSE; - if(0 == AXIS2_STRCMP(name, SANDESHA2_SEQ_PROP_SEQ_CLOSED)) + if(0 == axis2_strcasecmp(name_l, SANDESHA2_SEQ_PROP_SEQ_CLOSED)) deletable = AXIS2_FALSE; - if(0 == AXIS2_STRCMP(name, SANDESHA2_SEQ_PROP_SEQ_TIMED_OUT)) + if(0 == axis2_strcasecmp(name_l, SANDESHA2_SEQ_PROP_SEQ_TIMED_OUT)) deletable = AXIS2_FALSE; - + AXIS2_FREE(env->allocator, name_l); return deletable; } @@ -322,7 +371,7 @@ axis2_conf_ctx_t *conf_ctx, axis2_char_t *seq_id, axis2_bool_t svr_side, - sandesha2_storage_mgr_t *storage_man) + sandesha2_storage_mgr_t *storage_mgr) { sandesha2_seq_property_mgr_t *seq_prop_mgr = NULL; sandesha2_seq_property_bean_t *seq_term_bean = NULL; @@ -330,25 +379,25 @@ AXIS2_ENV_CHECK(env, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, conf_ctx, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, seq_id, AXIS2_FAILURE); - AXIS2_PARAM_CHECK(env->error, storage_man, AXIS2_FAILURE); + AXIS2_PARAM_CHECK(env->error, storage_mgr, AXIS2_FAILURE); - seq_prop_mgr = sandesha2_storage_mgr_get_seq_property_mgr(storage_man, env); + seq_prop_mgr = sandesha2_storage_mgr_get_seq_property_mgr(storage_mgr, env); seq_term_bean = sandesha2_seq_property_bean_create_with_data(env, seq_id, SANDESHA2_SEQ_PROP_SEQ_TIMED_OUT, SANDESHA2_VALUE_TRUE); sandesha2_seq_property_mgr_insert(seq_prop_mgr, env, seq_term_bean); sandesha2_terminate_mgr_clean_sending_side_data(env, conf_ctx, seq_id, - svr_side, storage_man); + svr_side, storage_mgr); return AXIS2_SUCCESS; } -AXIS2_EXTERN axis2_status_t AXIS2_CALL +static axis2_status_t sandesha2_terminate_mgr_clean_sending_side_data( const axis2_env_t *env, axis2_conf_ctx_t *conf_ctx, axis2_char_t *seq_id, axis2_bool_t svr_side, - sandesha2_storage_mgr_t *storage_man) + sandesha2_storage_mgr_t *storage_mgr) { sandesha2_seq_property_mgr_t *seq_prop_mgr = NULL; sandesha2_sender_mgr_t *retrans_mgr = NULL; @@ -361,14 +410,14 @@ AXIS2_ENV_CHECK(env, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, conf_ctx, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, seq_id, AXIS2_FAILURE); - AXIS2_PARAM_CHECK(env->error, storage_man, AXIS2_FAILURE); + AXIS2_PARAM_CHECK(env->error, storage_mgr, AXIS2_FAILURE); - seq_prop_mgr = sandesha2_storage_mgr_get_seq_property_mgr(storage_man, env); - retrans_mgr = sandesha2_storage_mgr_get_retrans_mgr(storage_man, env); - create_seq_mgr = sandesha2_storage_mgr_get_create_seq_mgr(storage_man, env); + seq_prop_mgr = sandesha2_storage_mgr_get_seq_property_mgr(storage_mgr, env); + retrans_mgr = sandesha2_storage_mgr_get_retrans_mgr(storage_mgr, env); + create_seq_mgr = sandesha2_storage_mgr_get_create_seq_mgr(storage_mgr, env); out_seq_id = sandesha2_utils_get_seq_property(env, seq_id, - SANDESHA2_SEQ_PROP_OUT_SEQ_ID, storage_man); + SANDESHA2_SEQ_PROP_OUT_SEQ_ID, storage_mgr); if(AXIS2_TRUE == svr_side) { sandesha2_seq_property_bean_t *acks_to_bean = NULL; @@ -380,7 +429,7 @@ seq_id, SANDESHA2_SEQ_PROP_ACKS_TO_EPR); addr_ns_uri = sandesha2_utils_get_seq_property(env, seq_id, SANDESHA2_SEQ_PROP_ADDRESSING_NAMESPACE_VALUE, - storage_man); + storage_mgr); anon_uri = sandesha2_spec_specific_consts_get_anon_uri(env, addr_ns_uri); if(NULL != acks_to_bean) { @@ -392,8 +441,8 @@ } found_list = sandesha2_sender_mgr_find_by_internal_seq_id(retrans_mgr, env, - seq_id); - if(NULL != found_list) + seq_id); + if(found_list) { int i = 0; for(i = 0; i < AXIS2_ARRAY_LIST_SIZE(found_list, env); i++) @@ -404,50 +453,68 @@ retrans_bean = AXIS2_ARRAY_LIST_GET(found_list, env, i); msg_store_key = sandesha2_sender_bean_get_msg_ctx_ref_key( retrans_bean, env); - sandesha2_storage_mgr_remove_msg_ctx(storage_man, env, msg_store_key); + sandesha2_storage_mgr_remove_msg_ctx(storage_mgr, env, msg_store_key); } } find_create_seq_bean = sandesha2_create_seq_bean_create(env); - sandesha2_create_seq_bean_set_internal_seq_id(find_create_seq_bean, env, - seq_id); + /* test comment */ + /*sandesha2_create_seq_bean_set_internal_seq_id(find_create_seq_bean, env, + seq_id);*/ found_list = sandesha2_create_seq_mgr_find(create_seq_mgr, env, find_create_seq_bean); - if(NULL != found_list) + if(found_list) { int i = 0; for(i = 0; i < AXIS2_ARRAY_LIST_SIZE(found_list, env); i++) { + axis2_char_t *key = NULL; + axis2_char_t *msg_id = NULL; sandesha2_create_seq_bean_t *create_seq_bean = NULL; create_seq_bean = AXIS2_ARRAY_LIST_GET(found_list, env, i); - sandesha2_create_seq_mgr_remove(create_seq_mgr, env, - sandesha2_create_seq_bean_get_create_seq_msg_id( - (sandesha2_rm_bean_t *) create_seq_bean, env)); + key = sandesha2_create_seq_bean_get_ref_msg_store_key( + create_seq_bean, env); + sandesha2_storage_mgr_remove_msg_ctx(storage_mgr, env, key); + msg_id = sandesha2_create_seq_bean_get_create_seq_msg_id( + (sandesha2_rm_bean_t *) create_seq_bean, env); + sandesha2_create_seq_mgr_remove(create_seq_mgr, env, msg_id); } } find_seq_prop_bean = sandesha2_seq_property_bean_create(env); - sandesha2_seq_property_bean_set_seq_id(find_seq_prop_bean, env, seq_id); + /* test comment */ + /*sandesha2_seq_property_bean_set_seq_id(find_seq_prop_bean, env, seq_id);*/ found_list = sandesha2_seq_property_mgr_find(seq_prop_mgr, env, find_seq_prop_bean); - if(NULL != found_list) + if(found_list) { - int i = 0; - for(i = 0; i < AXIS2_ARRAY_LIST_SIZE(found_list, env); i++) + int i = 0, size = 0; + size = AXIS2_ARRAY_LIST_SIZE(found_list, env); + for(i = 0; i < size; i++) { sandesha2_seq_property_bean_t *seq_prop_bean = NULL; seq_prop_bean = AXIS2_ARRAY_LIST_GET(found_list, env, i); sandesha2_terminate_mgr_do_updates_if_needed(env, out_seq_id, seq_prop_bean, seq_prop_mgr); - if(AXIS2_TRUE == sandesha2_terminate_mgr_is_property_deletable(env, - sandesha2_seq_property_bean_get_name(seq_prop_bean, env))) + /* test comment */ + /*if(sandesha2_terminate_mgr_is_property_deletable(env, + sandesha2_seq_property_bean_get_name(seq_prop_bean, env)))*/ { - sandesha2_seq_property_mgr_remove(seq_prop_mgr, env, - sandesha2_seq_property_bean_get_seq_id(seq_prop_bean, - env), sandesha2_seq_property_bean_get_name( - seq_prop_bean, env)); + axis2_char_t *highest_in_msg_key_str = NULL; + axis2_char_t *seq_id = sandesha2_seq_property_bean_get_seq_id( + seq_prop_bean, env); + axis2_char_t *name = sandesha2_seq_property_bean_get_name( + seq_prop_bean, env); + if(axis2_strcmp(name, SANDESHA2_SEQ_PROP_HIGHEST_IN_MSG_NUMBER)) + { + highest_in_msg_key_str = + sandesha2_seq_property_bean_get_value(seq_prop_bean, env); + sandesha2_storage_mgr_remove_msg_ctx(storage_mgr, env, + highest_in_msg_key_str); + } + sandesha2_seq_property_mgr_remove(seq_prop_mgr, env, seq_id, name); } } } @@ -460,7 +527,7 @@ sandesha2_msg_ctx_t *rm_msg_ctx, axis2_char_t *out_seq_id, axis2_char_t *int_seq_id, - sandesha2_storage_mgr_t *storage_man) + sandesha2_storage_mgr_t *storage_mgr) { axis2_msg_ctx_t *msg_ctx = NULL; axis2_msg_ctx_t *terminate_msg_ctx = NULL; @@ -485,12 +552,12 @@ AXIS2_PARAM_CHECK(env->error, rm_msg_ctx, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, out_seq_id, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, int_seq_id, AXIS2_FAILURE); - AXIS2_PARAM_CHECK(env->error, storage_man, AXIS2_FAILURE); + AXIS2_PARAM_CHECK(env->error, storage_mgr, AXIS2_FAILURE); msg_ctx = sandesha2_msg_ctx_get_msg_ctx(rm_msg_ctx, env); conf_ctx = AXIS2_MSG_CTX_GET_CONF_CTX(msg_ctx, env); - seq_prop_mgr = sandesha2_storage_mgr_get_seq_property_mgr(storage_man, env); + seq_prop_mgr = sandesha2_storage_mgr_get_seq_property_mgr(storage_mgr, env); terminated = sandesha2_seq_property_mgr_retrieve(seq_prop_mgr, env, out_seq_id, SANDESHA2_SEQ_PROP_TERMINATE_ADDED); if(terminated && sandesha2_seq_property_bean_get_value(terminated, env) @@ -501,7 +568,7 @@ " added previously"); } terminate_rm_msg = sandesha2_msg_creator_create_terminate_seq_msg(env, - rm_msg_ctx, out_seq_id, int_seq_id, storage_man); + rm_msg_ctx, out_seq_id, int_seq_id, storage_mgr); sandesha2_msg_ctx_set_flow(terminate_rm_msg, env, AXIS2_OUT_FLOW); property = axis2_property_create(env); AXIS2_PROPERTY_SET_SCOPE(property, env, AXIS2_SCOPE_REQUEST); @@ -522,7 +589,7 @@ } /*sandesha2_msg_ctx_set_to(rm_msg_ctx, env, to_epr);*/ sandesha2_msg_ctx_set_to(terminate_rm_msg, env, to_epr); - rm_ver = sandesha2_utils_get_rm_version(env, int_seq_id, storage_man); + rm_ver = sandesha2_utils_get_rm_version(env, int_seq_id, storage_mgr); if(!rm_ver) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[sandesha2] Cannot find the " @@ -555,23 +622,23 @@ sandesha2_sender_bean_set_msg_ctx_ref_key(terminate_bean, env, key); terminate_msg_ctx = sandesha2_msg_ctx_get_msg_ctx(terminate_rm_msg, env); /*AXIS2_MSG_CTX_SET_KEEP_ALIVE(terminate_msg_ctx, env, AXIS2_TRUE);*/ - sandesha2_storage_mgr_store_msg_ctx(storage_man, env, key, terminate_msg_ctx); + sandesha2_storage_mgr_store_msg_ctx(storage_mgr, env, key, + terminate_msg_ctx); sandesha2_sender_bean_set_time_to_send(terminate_bean, env, - sandesha2_utils_get_current_time_in_millis(env) + - SANDESHA2_TERMINATE_DELAY); + sandesha2_utils_get_current_time_in_millis(env) + + SANDESHA2_TERMINATE_DELAY); sandesha2_sender_bean_set_msg_id(terminate_bean, env, sandesha2_msg_ctx_get_msg_id(terminate_rm_msg, env)); sandesha2_sender_bean_set_send(terminate_bean, env, AXIS2_TRUE); property = axis2_property_create(env); - AXIS2_PROPERTY_SET_SCOPE(property, env, AXIS2_SCOPE_REQUEST); - AXIS2_PROPERTY_SET_VALUE(property, env, AXIS2_STRDUP(SANDESHA2_VALUE_FALSE, - env)); + AXIS2_PROPERTY_SET_SCOPE(property, env, AXIS2_SCOPE_APPLICATION); + AXIS2_PROPERTY_SET_VALUE(property, env, SANDESHA2_VALUE_FALSE); sandesha2_msg_ctx_set_property(terminate_rm_msg, env, - SANDESHA2_QUALIFIED_FOR_SENDING, property); + SANDESHA2_QUALIFIED_FOR_SENDING, property); sandesha2_sender_bean_set_resend(terminate_bean, env, AXIS2_FALSE); - retrans_mgr = sandesha2_storage_mgr_get_retrans_mgr(storage_man, env); + retrans_mgr = sandesha2_storage_mgr_get_retrans_mgr(storage_mgr, env); sandesha2_sender_mgr_insert(retrans_mgr, env, terminate_bean); Modified: webservices/sandesha/trunk/c/src/workers/in_order_invoker.c URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/workers/in_order_invoker.c?view=diff&rev=491758&r1=491757&r2=491758 ============================================================================== --- webservices/sandesha/trunk/c/src/workers/in_order_invoker.c (original) +++ webservices/sandesha/trunk/c/src/workers/in_order_invoker.c Mon Jan 1 23:57:33 2007 @@ -251,7 +251,7 @@ axis2_env_t *env = NULL; args = (sandesha2_in_order_invoker_args_t*)data; - env = args->env; + env = axis2_init_thread_env(args->env); invoker = args->impl; while(invoker->run_invoker) @@ -299,7 +299,7 @@ axis2_array_list_t *st_map_list = NULL; sandesha2_invoker_bean_t *find_bean = NULL; axis2_bool_t invoked = AXIS2_FALSE; - int j = 0; + int j = 0, size = 0; axis2_bool_t continue_seq = AXIS2_TRUE; seq_id = AXIS2_ARRAY_LIST_GET(all_seq_list, env, i); @@ -338,7 +338,8 @@ next_msg_no, seq_id, AXIS2_FALSE); st_map_list = sandesha2_invoker_mgr_find(storage_map_mgr, env, find_bean); - for(j = 0; j < AXIS2_ARRAY_LIST_SIZE(st_map_list, env); j++) + size = AXIS2_ARRAY_LIST_SIZE(st_map_list, env); + for(j = 0; j < size; j++) { sandesha2_invoker_bean_t *st_map_bean = NULL; axis2_char_t *key = NULL; @@ -353,8 +354,10 @@ st_map_bean = AXIS2_ARRAY_LIST_GET(st_map_list, env, j); key = sandesha2_invoker_bean_get_msg_ctx_ref_key( (sandesha2_rm_bean_t *) st_map_bean, env); + printf("msg_ref_key:%s\n", key); msg_to_invoke = sandesha2_storage_mgr_retrieve_msg_ctx( storage_mgr, env, key, invoker->conf_ctx); + printf("msg_to_invoke:%ld\n", msg_to_invoke); if(msg_to_invoke) rm_msg_ctx = sandesha2_msg_init_init_msg(env, msg_to_invoke); @@ -385,8 +388,11 @@ } else { + axis2_status_t status = AXIS2_FAILURE; AXIS2_MSG_CTX_SET_PAUSED(msg_to_invoke, env, AXIS2_FALSE); - AXIS2_ENGINE_RESUME_RECEIVE(engine, env, msg_to_invoke); + status = AXIS2_ENGINE_RESUME_RECEIVE(engine, env, msg_to_invoke); + if(!status) + return status; } invoked = AXIS2_TRUE; transaction = sandesha2_storage_mgr_get_transaction( Modified: webservices/sandesha/trunk/c/src/workers/sender.c URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/workers/sender.c?view=diff&rev=491758&r1=491757&r2=491758 ============================================================================== --- webservices/sandesha/trunk/c/src/workers/sender.c (original) +++ webservices/sandesha/trunk/c/src/workers/sender.c Mon Jan 1 23:57:33 2007 @@ -262,7 +262,7 @@ sandesha2_sender_bean_t *sender_bean = NULL; sandesha2_sender_worker_t *sender_worker = NULL; axis2_char_t *msg_id = NULL; - + printf("in sender\n"); AXIS2_SLEEP(SANDESHA2_SENDER_SLEEP_TIME); transaction = sandesha2_storage_mgr_get_transaction(storage_mgr, env); @@ -272,6 +272,8 @@ sender_bean = sandesha2_sender_mgr_get_next_msg_to_send(mgr, env); if(!sender_bean) { + printf("sender_bean is null\n"); + sandesha2_transaction_commit(transaction, env); AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "Sender Bean is NULL. "\ "So continue"); continue; @@ -281,7 +283,7 @@ sandesha2_transaction_commit(transaction, env); if(msg_id) { - /* Start a sender worker which will work on this message */ + /* Start a sender worker which will work on this message */ sender_worker = sandesha2_sender_worker_create(env, sender->conf_ctx, msg_id); sandesha2_sender_worker_run(sender_worker, env); Modified: webservices/sandesha/trunk/c/src/workers/sender_worker.c URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/workers/sender_worker.c?view=diff&rev=491758&r1=491757&r2=491758 ============================================================================== --- webservices/sandesha/trunk/c/src/workers/sender_worker.c (original) +++ webservices/sandesha/trunk/c/src/workers/sender_worker.c Mon Jan 1 23:57:33 2007 @@ -34,6 +34,7 @@ #include <axiom_soap_body.h> #include <sandesha2_msg_init.h> #include <sandesha2_terminate_seq.h> +#include <sandesha2_terminate_seq_res.h> #include <sandesha2_terminate_mgr.h> #include <sandesha2_msg_retrans_adjuster.h> #include <platforms/axis2_platform_auto_sense.h> @@ -233,12 +234,13 @@ storage_mgr = sandesha2_utils_get_storage_mgr(env, sender_worker->conf_ctx, AXIS2_CONF_CTX_GET_CONF(sender_worker->conf_ctx, env)); - transaction = sandesha2_storage_mgr_get_transaction(storage_mgr, env); sender_mgr = sandesha2_storage_mgr_get_retrans_mgr(storage_mgr, env); sender_worker_bean = sandesha2_sender_mgr_retrieve(sender_mgr, env, msg_id); if(!sender_worker_bean) { + printf("rollback6\n"); + sandesha2_transaction_rollback(transaction, env); return NULL; } @@ -247,6 +249,8 @@ sender_worker->conf_ctx); if(!msg_ctx) { + printf("rollback7\n"); + sandesha2_transaction_rollback(transaction, env); AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[sandesha2] msg_ctx is " "not present in the store"); return NULL; @@ -266,6 +270,8 @@ sender_worker_bean, sender_worker->conf_ctx, storage_mgr); if(!continue_sending) { + printf("rollback8\n"); + sandesha2_transaction_rollback(transaction, env); AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[sandesha2] Do not continue sending the message"); return NULL; @@ -275,13 +281,14 @@ SANDESHA2_QUALIFIED_FOR_SENDING, AXIS2_FALSE); if(property) qualified_for_sending = AXIS2_PROPERTY_GET_VALUE(property, env); - if(qualified_for_sending && 0 != AXIS2_STRCMP( qualified_for_sending, SANDESHA2_VALUE_TRUE)) { + printf("rollback9\n"); + sandesha2_transaction_rollback(transaction, env); AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[sandesha2] Message is not qualified for sending"); - return NULL; + return NULL; } rm_msg_ctx = sandesha2_msg_init_init_msg(env, msg_ctx); @@ -309,6 +316,8 @@ } if(continue_sending) { + printf("rollback10\n"); + sandesha2_transaction_rollback(transaction, env); AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[sandesha2] Continue "\ "Sending is true. So returning from Sender Worker"); return NULL; @@ -345,6 +354,7 @@ transport_sender = AXIS2_TRANSPORT_OUT_DESC_GET_SENDER(transport_out, env); if(transport_sender) { + printf("came5\n"); sandesha2_transaction_commit(transaction, env); property = AXIS2_MSG_CTX_GET_PROPERTY(msg_ctx, env, SANDESHA2_WITHIN_TRANSACTION, AXIS2_FALSE); @@ -366,6 +376,7 @@ sleep(300000);*/ } + printf("came13\n"); transaction = sandesha2_storage_mgr_get_transaction(storage_mgr, env); property = AXIS2_MSG_CTX_GET_PROPERTY(msg_ctx, env, @@ -415,8 +426,8 @@ sandesha2_sender_worker_check_for_sync_res(sender_worker, env, msg_ctx); } - if(SANDESHA2_MSG_TYPE_TERMINATE_SEQ == sandesha2_msg_ctx_get_msg_type( - rm_msg_ctx, env)) + msg_type = sandesha2_msg_ctx_get_msg_type(rm_msg_ctx, env); + if(SANDESHA2_MSG_TYPE_TERMINATE_SEQ == msg_type) { sandesha2_terminate_seq_t *terminate_seq = NULL; axis2_char_t *seq_id = NULL; @@ -436,6 +447,24 @@ int_seq_id, AXIS2_MSG_CTX_GET_SERVER_SIDE(msg_ctx, env), storage_mgr); } + else if(SANDESHA2_MSG_TYPE_TERMINATE_SEQ_RESPONSE == msg_type) + { + sandesha2_terminate_seq_res_t *terminate_seq_res = NULL; + axis2_char_t *seq_id = NULL; + axis2_conf_ctx_t *conf_ctx = NULL; + axis2_char_t *int_seq_id = NULL; + + terminate_seq_res = (sandesha2_terminate_seq_res_t*) + sandesha2_msg_ctx_get_msg_part(rm_msg_ctx, env, + SANDESHA2_MSG_PART_TERMINATE_SEQ_RESPONSE); + seq_id = sandesha2_identifier_get_identifier( + sandesha2_terminate_seq_res_get_identifier(terminate_seq_res, + env), env); + conf_ctx = AXIS2_MSG_CTX_GET_CONF_CTX(msg_ctx, env); + sandesha2_terminate_mgr_terminate_sending_side(env, conf_ctx, + seq_id, AXIS2_MSG_CTX_GET_SERVER_SIDE(msg_ctx, env), + storage_mgr); + } property = AXIS2_MSG_CTX_GET_PROPERTY(msg_ctx, env, SANDESHA2_WITHIN_TRANSACTION, AXIS2_FALSE); if(property) @@ -450,6 +479,7 @@ /* TODO make transaction handling effective */ if(transaction) { + printf("came6\n"); sandesha2_transaction_commit(transaction, env); } #ifdef AXIS2_SVR_MULTI_THREADED --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
