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?rev=604820&r1=604819&r2=604820&view=diff ============================================================================== --- webservices/sandesha/trunk/c/src/util/terminate_mgr.c (original) +++ webservices/sandesha/trunk/c/src/util/terminate_mgr.c Mon Dec 17 02:58:17 2007 @@ -47,21 +47,27 @@ axis2_conf_ctx_t *conf_ctx, axis2_char_t *seq_id, axis2_bool_t svr_side, - sandesha2_storage_mgr_t *storage_mgr); + sandesha2_storage_mgr_t *storage_mgr, + sandesha2_seq_property_mgr_t *seq_prop_mgr, + sandesha2_create_seq_mgr_t *create_seq_mgr, + sandesha2_sender_mgr_t *sender_mgr); static axis2_status_t sandesha2_terminate_mgr_complete_termination_of_recv_side( const axutil_env_t *env, axis2_conf_ctx_t *conf_ctx, axis2_char_t *seq_id, - sandesha2_storage_mgr_t *storage_mgr); + sandesha2_storage_mgr_t *storage_mgr, + sandesha2_seq_property_mgr_t *seq_prop_mgr, + sandesha2_next_msg_mgr_t *next_msg_mgr); static axis2_status_t sandesha2_terminate_mgr_remove_recv_side_properties( const axutil_env_t *env, axis2_conf_ctx_t *conf_ctx, axis2_char_t *seq_id, - sandesha2_storage_mgr_t *storage_mgr); + sandesha2_storage_mgr_t *storage_mgr, + sandesha2_seq_property_mgr_t *seq_prop_mgr); static axis2_bool_t sandesha2_terminate_mgr_is_property_deletable( @@ -73,37 +79,40 @@ const axutil_env_t *env, axis2_conf_ctx_t *conf_ctx, axis2_char_t *seq_id, - sandesha2_storage_mgr_t *storage_mgr) + sandesha2_storage_mgr_t *storage_mgr, + sandesha2_seq_property_mgr_t *seq_prop_mgr, + sandesha2_next_msg_mgr_t *next_msg_mgr) { - axis2_bool_t in_order_invoke = AXIS2_FALSE; - sandesha2_property_bean_t *prop_bean = NULL; + /*axis2_bool_t in_order_invoke = AXIS2_FALSE; + sandesha2_property_bean_t *prop_bean = NULL;*/ AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[sandesha2]Entry:sandesha2_terminate_mgr_clean_recv_side_after_terminate_msg"); AXIS2_PARAM_CHECK(env->error, conf_ctx, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, seq_id, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, storage_mgr, AXIS2_FAILURE); + AXIS2_PARAM_CHECK(env->error, next_msg_mgr, AXIS2_FAILURE); - if(!sandesha2_terminate_mgr_rcv_side_clean_map) + /*if(!sandesha2_terminate_mgr_rcv_side_clean_map) { axutil_allocator_switch_to_global_pool(env->allocator); sandesha2_terminate_mgr_rcv_side_clean_map = axutil_hash_make(env); axutil_allocator_switch_to_local_pool(env->allocator); - } + }*/ - prop_bean = sandesha2_utils_get_property_bean(env, axis2_conf_ctx_get_conf( + /*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(!in_order_invoke) + if(!in_order_invoke)*/ { - axutil_allocator_switch_to_global_pool(env->allocator); + /*axutil_allocator_switch_to_global_pool(env->allocator); axutil_hash_set(sandesha2_terminate_mgr_rcv_side_clean_map, seq_id, AXIS2_HASH_KEY_STRING, axutil_strdup(env, SANDESHA2_CLEANED_ON_TERMINATE_MSG)); - axutil_allocator_switch_to_local_pool(env->allocator); + axutil_allocator_switch_to_local_pool(env->allocator);*/ sandesha2_terminate_mgr_clean_recv_side_after_invocation(env, conf_ctx, - seq_id, storage_mgr); + seq_id, storage_mgr, seq_prop_mgr, next_msg_mgr); } - else + /*else { axis2_char_t *clean_status = NULL; axutil_allocator_switch_to_global_pool(env->allocator); clean_status = axutil_hash_get( @@ -124,7 +133,7 @@ SANDESHA2_CLEANED_ON_TERMINATE_MSG)); axutil_allocator_switch_to_local_pool(env->allocator); } - } + }*/ AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[sandesha2]Exit:sandesha2_terminate_mgr_clean_recv_side_after_terminate_msg"); return AXIS2_SUCCESS; @@ -135,28 +144,31 @@ const axutil_env_t *env, axis2_conf_ctx_t *conf_ctx, axis2_char_t *seq_id, - sandesha2_storage_mgr_t *storage_mgr) + sandesha2_storage_mgr_t *storage_mgr, + sandesha2_seq_property_mgr_t *seq_prop_mgr, + sandesha2_next_msg_mgr_t *next_msg_mgr) { - sandesha2_invoker_mgr_t *invoker_mgr = NULL; + /*sandesha2_invoker_mgr_t *invoker_mgr = NULL; sandesha2_invoker_bean_t *find_bean = NULL; axutil_array_list_t *found_list = NULL; int i = 0; - axis2_char_t *clean_status = NULL; + axis2_char_t *clean_status = NULL;*/ AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[sandesha2]Entry:sandesha2_terminate_mgr_clean_recv_side_after_invocation"); AXIS2_PARAM_CHECK(env->error, conf_ctx, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, seq_id, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, storage_mgr, AXIS2_FAILURE); + AXIS2_PARAM_CHECK(env->error, next_msg_mgr, AXIS2_FAILURE); - if(!sandesha2_terminate_mgr_rcv_side_clean_map) + /*if(!sandesha2_terminate_mgr_rcv_side_clean_map) { axutil_allocator_switch_to_global_pool(env->allocator); sandesha2_terminate_mgr_rcv_side_clean_map = axutil_hash_make(env); axutil_allocator_switch_to_local_pool(env->allocator); - } + }*/ - invoker_mgr = sandesha2_storage_mgr_get_storage_map_mgr(storage_mgr, 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); @@ -175,18 +187,18 @@ sandesha2_invoker_mgr_remove(invoker_mgr, env, sandesha2_invoker_bean_get_msg_ctx_ref_key((sandesha2_rm_bean_t *) map_bean, env)); - } - axutil_allocator_switch_to_global_pool(env->allocator); + }*/ + /*axutil_allocator_switch_to_global_pool(env->allocator); clean_status = axutil_hash_get(sandesha2_terminate_mgr_rcv_side_clean_map, seq_id, AXIS2_HASH_KEY_STRING); - axutil_allocator_switch_to_local_pool(env->allocator); + axutil_allocator_switch_to_local_pool(env->allocator);*/ - if(clean_status && 0 == axutil_strcmp(clean_status, + /*if(clean_status && 0 == axutil_strcmp(clean_status, SANDESHA2_CLEANED_ON_TERMINATE_MSG)) - { + {*/ sandesha2_terminate_mgr_complete_termination_of_recv_side(env, conf_ctx, seq_id, - storage_mgr); - } + storage_mgr, seq_prop_mgr, next_msg_mgr); + /*} else { axutil_allocator_switch_to_global_pool(env->allocator); @@ -194,7 +206,7 @@ AXIS2_HASH_KEY_STRING, axutil_strdup(env, SANDESHA2_CLEANED_AFTER_INVOCATION)); axutil_allocator_switch_to_local_pool(env->allocator); - } + }*/ AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, @@ -207,9 +219,10 @@ const axutil_env_t *env, axis2_conf_ctx_t *conf_ctx, axis2_char_t *seq_id, - sandesha2_storage_mgr_t *storage_mgr) + sandesha2_storage_mgr_t *storage_mgr, + sandesha2_seq_property_mgr_t *seq_prop_mgr, + sandesha2_next_msg_mgr_t *next_msg_mgr) { - sandesha2_next_msg_mgr_t *next_mgr = NULL; sandesha2_next_msg_bean_t *find_bean = NULL; axutil_array_list_t *found_list = NULL; axis2_char_t *highest_in_msg_key = NULL; @@ -220,12 +233,13 @@ AXIS2_PARAM_CHECK(env->error, conf_ctx, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, seq_id, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, storage_mgr, AXIS2_FAILURE); + AXIS2_PARAM_CHECK(env->error, seq_prop_mgr, AXIS2_FAILURE); + AXIS2_PARAM_CHECK(env->error, next_msg_mgr, AXIS2_FAILURE); - 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); - found_list = sandesha2_next_msg_mgr_find(next_mgr, env, find_bean); + found_list = sandesha2_next_msg_mgr_find(next_msg_mgr, env, find_bean); if(found_list) size = axutil_array_list_size(found_list, env); for(i = 0; i < size; i++) @@ -239,23 +253,24 @@ key = sandesha2_next_msg_bean_get_ref_msg_key(bean, env); if(key) { - sandesha2_storage_mgr_remove_msg_ctx(storage_mgr, env, key); + sandesha2_storage_mgr_remove_msg_ctx(storage_mgr, env, key, + conf_ctx); } seq_id = sandesha2_next_msg_bean_get_seq_id((sandesha2_rm_bean_t *) bean, env); if(seq_id) - sandesha2_next_msg_mgr_remove(next_mgr, env, seq_id); + sandesha2_next_msg_mgr_remove(next_msg_mgr, env, seq_id); } } highest_in_msg_key = sandesha2_utils_get_seq_property(env, seq_id, - SANDESHA2_SEQ_PROP_HIGHEST_IN_MSG_KEY, storage_mgr); + SANDESHA2_SEQ_PROP_HIGHEST_IN_MSG_KEY, seq_prop_mgr); if(highest_in_msg_key) { sandesha2_storage_mgr_remove_msg_ctx(storage_mgr, env, - highest_in_msg_key); + highest_in_msg_key, conf_ctx); } sandesha2_terminate_mgr_remove_recv_side_properties(env, conf_ctx, seq_id, - storage_mgr); + storage_mgr, seq_prop_mgr); AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[sandesha2]Exit:sandesha2_terminate_mgr_complete_termination_of_recv_side"); return AXIS2_SUCCESS; @@ -266,9 +281,9 @@ const axutil_env_t *env, axis2_conf_ctx_t *conf_ctx, axis2_char_t *seq_id, - sandesha2_storage_mgr_t *storage_mgr) + sandesha2_storage_mgr_t *storage_mgr, + sandesha2_seq_property_mgr_t *seq_prop_mgr) { - sandesha2_seq_property_mgr_t *seq_prop_mgr = NULL; sandesha2_seq_property_bean_t *all_seq_bean = NULL; axutil_array_list_t *found_list = NULL; sandesha2_seq_property_bean_t *find_seq_prop_bean = NULL; @@ -278,8 +293,8 @@ AXIS2_PARAM_CHECK(env->error, conf_ctx, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, seq_id, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, storage_mgr, AXIS2_FAILURE); + AXIS2_PARAM_CHECK(env->error, seq_prop_mgr, AXIS2_FAILURE); - 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(all_seq_bean) @@ -341,7 +356,7 @@ "Removing the message context for the highest in "\ "message number"); sandesha2_storage_mgr_remove_msg_ctx(storage_mgr, env, - highest_in_msg_key_str); + highest_in_msg_key_str, conf_ctx); } AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[sandesha2] Removing "\ "the sequence property named %s in the sequence %s", name, @@ -361,23 +376,27 @@ axis2_conf_ctx_t *conf_ctx, axis2_char_t *seq_id, axis2_bool_t svr_side, - sandesha2_storage_mgr_t *storage_mgr) + sandesha2_storage_mgr_t *storage_mgr, + sandesha2_seq_property_mgr_t *seq_prop_mgr, + sandesha2_create_seq_mgr_t *create_seq_mgr, + sandesha2_sender_mgr_t *sender_mgr) { - sandesha2_seq_property_mgr_t *seq_prop_mgr = NULL; sandesha2_seq_property_bean_t *seq_term_bean = NULL; AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[sandesha2]Entry:sandesha2_terminate_mgr_terminate_sending_side"); AXIS2_PARAM_CHECK(env->error, conf_ctx, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, seq_id, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, storage_mgr, AXIS2_FAILURE); + AXIS2_PARAM_CHECK(env->error, seq_prop_mgr, AXIS2_FAILURE); + AXIS2_PARAM_CHECK(env->error, create_seq_mgr, AXIS2_FAILURE); + AXIS2_PARAM_CHECK(env->error, sender_mgr, AXIS2_FAILURE); - 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, AXIS2_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_mgr); + sandesha2_terminate_mgr_clean_sending_side_data(env, conf_ctx, seq_id, + svr_side, storage_mgr, seq_prop_mgr, create_seq_mgr, sender_mgr); AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[sandesha2]Exit:sandesha2_terminate_mgr_terminate_sending_side"); return AXIS2_SUCCESS; @@ -388,14 +407,14 @@ const axutil_env_t *env, axis2_char_t *seq_id, sandesha2_seq_property_bean_t *prop_bean, - sandesha2_seq_property_mgr_t *prop_mgr) + sandesha2_seq_property_mgr_t *seq_prop_mgr) { axis2_bool_t add_entry_with_seq_id = AXIS2_FALSE; axis2_char_t *name = NULL; AXIS2_PARAM_CHECK(env->error, prop_bean, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, seq_id, AXIS2_FAILURE); - AXIS2_PARAM_CHECK(env->error, prop_mgr, AXIS2_FAILURE); + AXIS2_PARAM_CHECK(env->error, seq_prop_mgr, AXIS2_FAILURE); name = sandesha2_seq_property_bean_get_name(prop_bean, env); if(NULL == name) @@ -418,8 +437,8 @@ sandesha2_seq_property_bean_set_name(new_bean, env, name); sandesha2_seq_property_bean_set_value(new_bean, env, sandesha2_seq_property_bean_get_value(prop_bean, env)); - sandesha2_seq_property_mgr_insert(prop_mgr, env, new_bean); - sandesha2_seq_property_mgr_remove(prop_mgr, env, + sandesha2_seq_property_mgr_insert(seq_prop_mgr, env, new_bean); + sandesha2_seq_property_mgr_remove(seq_prop_mgr, env, sandesha2_seq_property_bean_get_seq_id(prop_bean, env), name); } @@ -455,9 +474,11 @@ axis2_conf_ctx_t *conf_ctx, axis2_char_t *seq_id, axis2_bool_t svr_side, - sandesha2_storage_mgr_t *storage_mgr) + sandesha2_storage_mgr_t *storage_mgr, + sandesha2_seq_property_mgr_t *seq_prop_mgr, + sandesha2_create_seq_mgr_t *create_seq_mgr, + sandesha2_sender_mgr_t *sender_mgr) { - sandesha2_seq_property_mgr_t *seq_prop_mgr = NULL; sandesha2_seq_property_bean_t *seq_term_bean = NULL; AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, @@ -465,14 +486,16 @@ AXIS2_PARAM_CHECK(env->error, conf_ctx, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, seq_id, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, storage_mgr, AXIS2_FAILURE); + AXIS2_PARAM_CHECK(env->error, seq_prop_mgr, AXIS2_FAILURE); + AXIS2_PARAM_CHECK(env->error, create_seq_mgr, AXIS2_FAILURE); + AXIS2_PARAM_CHECK(env->error, sender_mgr, AXIS2_FAILURE); - 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, AXIS2_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_mgr); + svr_side, storage_mgr, seq_prop_mgr, create_seq_mgr, sender_mgr); AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[sandesha2]Exit:sandesha2_terminate_mgr_time_out_sending_side_seq"); return AXIS2_SUCCESS; @@ -484,11 +507,11 @@ axis2_conf_ctx_t *conf_ctx, axis2_char_t *seq_id, axis2_bool_t svr_side, - sandesha2_storage_mgr_t *storage_mgr) + sandesha2_storage_mgr_t *storage_mgr, + sandesha2_seq_property_mgr_t *seq_prop_mgr, + sandesha2_create_seq_mgr_t *create_seq_mgr, + sandesha2_sender_mgr_t *sender_mgr) { - sandesha2_seq_property_mgr_t *seq_prop_mgr = NULL; - sandesha2_sender_mgr_t *retrans_mgr = NULL; - sandesha2_create_seq_mgr_t *create_seq_mgr = NULL; axis2_char_t *out_seq_id = NULL; axis2_char_t *internal_seq_id = NULL; axutil_array_list_t *found_list = NULL; @@ -500,13 +523,12 @@ AXIS2_PARAM_CHECK(env->error, conf_ctx, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, seq_id, AXIS2_FAILURE); AXIS2_PARAM_CHECK(env->error, storage_mgr, AXIS2_FAILURE); - - 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); - + AXIS2_PARAM_CHECK(env->error, seq_prop_mgr, AXIS2_FAILURE); + AXIS2_PARAM_CHECK(env->error, create_seq_mgr, AXIS2_FAILURE); + AXIS2_PARAM_CHECK(env->error, sender_mgr, AXIS2_FAILURE); + out_seq_id = sandesha2_utils_get_seq_property(env, seq_id, - SANDESHA2_SEQ_PROP_OUT_SEQ_ID, storage_mgr); + SANDESHA2_SEQ_PROP_OUT_SEQ_ID, seq_prop_mgr); if(!svr_side) { sandesha2_seq_property_bean_t *acks_to_bean = NULL; @@ -516,8 +538,7 @@ acks_to_bean = sandesha2_seq_property_mgr_retrieve(seq_prop_mgr, env, 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_mgr); + SANDESHA2_SEQ_PROP_ADDRESSING_NAMESPACE_VALUE, seq_prop_mgr); if(acks_to_bean) { axis2_char_t *acks_to = NULL; @@ -528,10 +549,10 @@ } internal_seq_id = sandesha2_utils_get_seq_property(env, seq_id, - SANDESHA2_SEQ_PROP_INTERNAL_SEQ_ID, storage_mgr); + SANDESHA2_SEQ_PROP_INTERNAL_SEQ_ID, seq_prop_mgr); if(!internal_seq_id) internal_seq_id = seq_id; - found_list = sandesha2_sender_mgr_find_by_internal_seq_id(retrans_mgr, env, + found_list = sandesha2_sender_mgr_find_by_internal_seq_id(sender_mgr, env, internal_seq_id); if(found_list) { @@ -548,10 +569,11 @@ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[sandesha2] Removing the"\ " sender bean with msg_id %s and internal_seq_id %s", msg_id, internal_seq_id); - sandesha2_sender_mgr_remove(retrans_mgr, env, msg_id); + sandesha2_sender_mgr_remove(sender_mgr, env, msg_id); msg_store_key = sandesha2_sender_bean_get_msg_ctx_ref_key( retrans_bean, env); - sandesha2_storage_mgr_remove_msg_ctx(storage_mgr, env, msg_store_key); + sandesha2_storage_mgr_remove_msg_ctx(storage_mgr, env, + msg_store_key, conf_ctx); } } @@ -573,7 +595,8 @@ key = sandesha2_create_seq_bean_get_ref_msg_store_key( create_seq_bean, env); if(key) - sandesha2_storage_mgr_remove_msg_ctx(storage_mgr, env, key); + sandesha2_storage_mgr_remove_msg_ctx(storage_mgr, env, key, + conf_ctx); msg_id = sandesha2_create_seq_bean_get_create_seq_msg_id( (sandesha2_rm_bean_t *) create_seq_bean, env); AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[sandesha2] Removing the"\ @@ -614,7 +637,7 @@ "Removing the message context for the highest in "\ "message number"); sandesha2_storage_mgr_remove_msg_ctx(storage_mgr, env, - highest_in_msg_key_str); + highest_in_msg_key_str, conf_ctx); } AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[sandesha2] Removing "\ "the sequence property named %s in the sequence %s", name, @@ -634,12 +657,14 @@ sandesha2_msg_ctx_t *rm_msg_ctx, axis2_char_t *out_seq_id, axis2_char_t *int_seq_id, - sandesha2_storage_mgr_t *storage_mgr) + sandesha2_storage_mgr_t *storage_mgr, + sandesha2_seq_property_mgr_t *seq_prop_mgr, + sandesha2_create_seq_mgr_t *create_seq_mgr, + sandesha2_sender_mgr_t *sender_mgr) { axis2_msg_ctx_t *msg_ctx = NULL; axis2_msg_ctx_t *terminate_msg_ctx = NULL; axis2_conf_ctx_t *conf_ctx = NULL; - sandesha2_seq_property_mgr_t *seq_prop_mgr = NULL; sandesha2_seq_property_bean_t *terminated = NULL; sandesha2_msg_ctx_t *terminate_rm_msg = NULL; axutil_property_t *property = NULL; @@ -649,7 +674,6 @@ sandesha2_seq_property_bean_t *transport_to_bean = NULL; axis2_char_t *key = NULL; sandesha2_sender_bean_t *terminate_bean = NULL; - sandesha2_sender_mgr_t *retrans_mgr = NULL; sandesha2_seq_property_bean_t *terminate_added = NULL; axis2_transport_out_desc_t *transport_out = NULL; axis2_msg_ctx_t *msg_ctx1 = NULL; @@ -668,11 +692,13 @@ 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_mgr, AXIS2_FAILURE); + AXIS2_PARAM_CHECK(env->error, seq_prop_mgr, AXIS2_FAILURE); + AXIS2_PARAM_CHECK(env->error, create_seq_mgr, AXIS2_FAILURE); + AXIS2_PARAM_CHECK(env->error, sender_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_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) @@ -687,7 +713,7 @@ return AXIS2_SUCCESS; } terminate_rm_msg = sandesha2_msg_creator_create_terminate_seq_msg(env, - rm_msg_ctx, out_seq_id, int_seq_id, storage_mgr); + rm_msg_ctx, out_seq_id, int_seq_id, seq_prop_mgr); sandesha2_msg_ctx_set_flow(terminate_rm_msg, env, AXIS2_OUT_FLOW); property = axutil_property_create_with_args(env, 0, 0, 0, AXIS2_VALUE_TRUE); sandesha2_msg_ctx_set_property(terminate_rm_msg, env, @@ -707,7 +733,7 @@ if(to_epr) to_addr = axis2_endpoint_ref_get_address(to_epr, env); sandesha2_msg_ctx_set_to(terminate_rm_msg, env, to_epr); - rm_ver = sandesha2_utils_get_rm_version(env, int_seq_id, storage_mgr); + rm_ver = sandesha2_utils_get_rm_version(env, int_seq_id, seq_prop_mgr); if(!rm_ver) { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[sandesha2] Cannot find the " @@ -754,10 +780,10 @@ sandesha2_terminate_seq_get_identifier(terminate_seq, env), env); internal_seq_id = sandesha2_utils_get_seq_property(env, seq_id, - SANDESHA2_SEQ_PROP_INTERNAL_SEQ_ID, storage_mgr); + SANDESHA2_SEQ_PROP_INTERNAL_SEQ_ID, seq_prop_mgr); sandesha2_terminate_mgr_terminate_sending_side(env, conf_ctx, internal_seq_id, axis2_msg_ctx_get_server_side(msg_ctx1, env), - storage_mgr); + storage_mgr, seq_prop_mgr, create_seq_mgr, sender_mgr); } return AXIS2_SUCCESS; } @@ -790,9 +816,7 @@ SANDESHA2_MSG_TYPE_TERMINATE_SEQ); sandesha2_sender_bean_set_resend(terminate_bean, env, AXIS2_FALSE); - retrans_mgr = sandesha2_storage_mgr_get_retrans_mgr(storage_mgr, env); - - sandesha2_sender_mgr_insert(retrans_mgr, env, terminate_bean); + sandesha2_sender_mgr_insert(sender_mgr, env, terminate_bean); terminate_added = sandesha2_seq_property_bean_create(env); sandesha2_seq_property_bean_set_name(terminate_added, env,
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?rev=604820&r1=604819&r2=604820&view=diff ============================================================================== --- webservices/sandesha/trunk/c/src/workers/in_order_invoker.c (original) +++ webservices/sandesha/trunk/c/src/workers/in_order_invoker.c Mon Dec 17 02:58:17 2007 @@ -22,6 +22,9 @@ #include <sandesha2_seq_property_mgr.h> #include <sandesha2_next_msg_mgr.h> #include <sandesha2_invoker_mgr.h> +#include <sandesha2_permanent_seq_property_mgr.h> +#include <sandesha2_permanent_next_msg_mgr.h> +#include <sandesha2_permanent_invoker_mgr.h> #include <sandesha2_msg_ctx.h> #include <sandesha2_seq.h> #include <sandesha2_msg_init.h> @@ -244,36 +247,44 @@ sandesha2_in_order_invoker_t *invoker = NULL; sandesha2_in_order_invoker_args_t *args; axutil_env_t *env = NULL; + sandesha2_storage_mgr_t *storage_mgr = NULL; + sandesha2_next_msg_mgr_t *next_msg_mgr = NULL; + sandesha2_invoker_mgr_t *invoker_mgr = NULL; + sandesha2_seq_property_mgr_t *seq_prop_mgr = NULL; + axis2_char_t *dbname = NULL; args = (sandesha2_in_order_invoker_args_t*)data; env = axutil_init_thread_env(args->env); invoker = args->impl; + storage_mgr = sandesha2_utils_get_storage_mgr(env, invoker->conf_ctx, + axis2_conf_ctx_get_conf(invoker->conf_ctx, env)); + dbname = sandesha2_util_get_dbname(env, invoker->conf_ctx); + seq_prop_mgr = sandesha2_permanent_seq_property_mgr_create(env, dbname); + next_msg_mgr = sandesha2_permanent_next_msg_mgr_create(env, dbname); + invoker_mgr = sandesha2_permanent_invoker_mgr_create(env, dbname); while(invoker->run_invoker) { - sandesha2_storage_mgr_t *storage_mgr = NULL; - sandesha2_next_msg_mgr_t *next_msg_mgr = NULL; - sandesha2_invoker_mgr_t *storage_map_mgr = NULL; - sandesha2_seq_property_mgr_t *seq_prop_mgr = NULL; sandesha2_seq_property_bean_t *all_seq_bean = NULL; axutil_array_list_t *all_seq_list = NULL; int i = 0; AXIS2_SLEEP(SANDESHA2_INVOKER_SLEEP_TIME); if(!invoker->conf_ctx) + { + if(seq_prop_mgr) + sandesha2_seq_property_mgr_free(seq_prop_mgr, env); + if(next_msg_mgr) + sandesha2_next_msg_mgr_free(next_msg_mgr, env); + if(invoker_mgr) + sandesha2_invoker_mgr_free(invoker_mgr, env); + if(storage_mgr) + sandesha2_storage_mgr_free(storage_mgr, env); return NULL; - storage_mgr = sandesha2_utils_get_storage_mgr(env, - invoker->conf_ctx, - axis2_conf_ctx_get_conf(invoker->conf_ctx, env)); - next_msg_mgr = sandesha2_storage_mgr_get_next_msg_mgr( - storage_mgr, env); - storage_map_mgr = sandesha2_storage_mgr_get_storage_map_mgr - (storage_mgr, 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); + env, SANDESHA2_SEQ_PROP_ALL_SEQS, + SANDESHA2_SEQ_PROP_INCOMING_SEQ_LIST); if(!all_seq_bean) continue; all_seq_list = sandesha2_utils_get_array_list_from_string(env, @@ -319,11 +330,19 @@ { AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Invalid message number" " as the Next Message Number."); + if(seq_prop_mgr) + sandesha2_seq_property_mgr_free(seq_prop_mgr, env); + if(next_msg_mgr) + sandesha2_next_msg_mgr_free(next_msg_mgr, env); + if(invoker_mgr) + sandesha2_invoker_mgr_free(invoker_mgr, env); + if(storage_mgr) + sandesha2_storage_mgr_free(storage_mgr, env); return data; } find_bean = sandesha2_invoker_bean_create_with_data(env, NULL, next_msg_no, seq_id, AXIS2_FALSE); - st_map_list = sandesha2_invoker_mgr_find(storage_map_mgr, + st_map_list = sandesha2_invoker_mgr_find(invoker_mgr, env, find_bean); size = axutil_array_list_size(st_map_list, env); for(j = 0; j < size; j++) @@ -369,15 +388,26 @@ axis2_msg_ctx_set_paused(msg_to_invoke, env, AXIS2_FALSE); status = axis2_engine_resume_receive(engine, env, msg_to_invoke); if(!status) + { + if(seq_prop_mgr) + sandesha2_seq_property_mgr_free(seq_prop_mgr, env); + if(next_msg_mgr) + sandesha2_next_msg_mgr_free(next_msg_mgr, env); + if(invoker_mgr) + sandesha2_invoker_mgr_free(invoker_mgr, env); + if(storage_mgr) + sandesha2_storage_mgr_free(storage_mgr, env); return NULL; + } } invoked = AXIS2_TRUE; - sandesha2_storage_mgr_remove_msg_ctx(storage_mgr, env, key); + sandesha2_storage_mgr_remove_msg_ctx(storage_mgr, env, key, + invoker->conf_ctx); msg_ctx = sandesha2_storage_mgr_retrieve_msg_ctx( storage_mgr, env, key, invoker->conf_ctx, AXIS2_FALSE); if(msg_ctx) sandesha2_storage_mgr_remove_msg_ctx(storage_mgr, - env, key); + env, key, invoker->conf_ctx); if(SANDESHA2_MSG_TYPE_APPLICATION == sandesha2_msg_ctx_get_msg_type(rm_msg_ctx, env)) { @@ -387,8 +417,8 @@ if(sandesha2_seq_get_last_msg(seq, env)) { sandesha2_terminate_mgr_clean_recv_side_after_invocation( - env, invoker->conf_ctx, seq_id, - storage_mgr); + env, invoker->conf_ctx, seq_id, storage_mgr, + seq_prop_mgr, next_msg_mgr); /* we are done with current seq */ continue_seq = AXIS2_FALSE; break; @@ -409,6 +439,14 @@ } } } + if(seq_prop_mgr) + sandesha2_seq_property_mgr_free(seq_prop_mgr, env); + if(next_msg_mgr) + sandesha2_next_msg_mgr_free(next_msg_mgr, env); + if(invoker_mgr) + sandesha2_invoker_mgr_free(invoker_mgr, env); + if(storage_mgr) + sandesha2_storage_mgr_free(storage_mgr, env); return NULL; } Modified: webservices/sandesha/trunk/c/src/workers/sender.c URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/workers/sender.c?rev=604820&r1=604819&r2=604820&view=diff ============================================================================== --- webservices/sandesha/trunk/c/src/workers/sender.c (original) +++ webservices/sandesha/trunk/c/src/workers/sender.c Mon Dec 17 02:58:17 2007 @@ -20,7 +20,11 @@ #include <sandesha2_storage_mgr.h> #include <sandesha2_seq_property_bean.h> #include <sandesha2_seq_property_mgr.h> +#include <sandesha2_create_seq_mgr.h> #include <sandesha2_sender_mgr.h> +#include <sandesha2_permanent_seq_property_mgr.h> +#include <sandesha2_permanent_create_seq_mgr.h> +#include <sandesha2_permanent_sender_mgr.h> #include <sandesha2_msg_ctx.h> #include <sandesha2_seq.h> #include <sandesha2_sender_worker.h> @@ -162,7 +166,7 @@ "failed for sandesha2_sender_run"); return AXIS2_FAILURE; } - axutil_thread_pool_thread_detach(env->thread_pool, worker_thread); + axutil_thread_pool_thread_detach(env->thread_pool, worker_thread); AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[sandesha2]Exit:sandesha2_sender_run"); return AXIS2_SUCCESS; @@ -181,12 +185,15 @@ axutil_env_t *env = NULL; sandesha2_storage_mgr_t *storage_mgr = NULL; sandesha2_seq_property_mgr_t *seq_prop_mgr = NULL; + sandesha2_create_seq_mgr_t *create_seq_mgr = NULL; + sandesha2_sender_mgr_t *sender_mgr = NULL; axis2_conf_t *conf = NULL; axis2_module_desc_t *module_desc = NULL; int sleep_time = 0; axutil_qname_t *qname = NULL; axutil_param_t *sleep_time_param = NULL; axis2_char_t *seq_id = NULL; + axis2_char_t *dbname = NULL; args = (sandesha2_sender_args_t*)data; env = axutil_init_thread_env(args->env); @@ -197,6 +204,11 @@ conf = axis2_conf_ctx_get_conf(sender->conf_ctx, env); storage_mgr = sandesha2_utils_get_storage_mgr(env, sender->conf_ctx, conf); + dbname = sandesha2_util_get_dbname(env, sender->conf_ctx); + seq_prop_mgr = sandesha2_permanent_seq_property_mgr_create(env, dbname); + create_seq_mgr = sandesha2_permanent_create_seq_mgr_create(env, dbname); + sender_mgr = sandesha2_permanent_sender_mgr_create(env, dbname); + qname = axutil_qname_create(env, SANDESHA2_MODULE, NULL, NULL); module_desc = axis2_conf_get_module(conf, env, qname); sleep_time_param = axis2_module_desc_get_param(module_desc, env, @@ -210,13 +222,9 @@ seq_id = sender->seq_id; while(sender->run_sender) { - sandesha2_sender_mgr_t *sender_mgr = NULL; sandesha2_sender_bean_t *sender_bean = NULL; axis2_char_t *msg_id = NULL; - seq_prop_mgr = sandesha2_storage_mgr_get_seq_property_mgr( - storage_mgr, env); - sender_mgr = sandesha2_storage_mgr_get_retrans_mgr(storage_mgr, env); sender_bean = sandesha2_sender_mgr_get_next_msg_to_send(sender_mgr, env, seq_id); if(!sender_bean) @@ -230,7 +238,8 @@ { axis2_bool_t status = AXIS2_TRUE; status = sandesha2_sender_worker_send(env, sender->conf_ctx, msg_id, - sender->persistent_msg_ctx); + sender->persistent_msg_ctx, storage_mgr, seq_prop_mgr, + create_seq_mgr, sender_mgr); if(!status) { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, @@ -239,11 +248,19 @@ } } } - AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, - "[sandesha2]Exit:sandesha2_sender_worker_func"); #ifdef AXIS2_SVR_MULTI_THREADED AXIS2_THREAD_POOL_EXIT_THREAD(env->thread_pool, thd); #endif + if(seq_prop_mgr) + sandesha2_seq_property_mgr_free(seq_prop_mgr, env); + if(create_seq_mgr) + sandesha2_create_seq_mgr_free(create_seq_mgr, env); + if(sender_mgr) + sandesha2_sender_mgr_free(sender_mgr, env); + if(storage_mgr) + sandesha2_storage_mgr_free(storage_mgr, env); + AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, + "[sandesha2]Exit:sandesha2_sender_worker_func"); return NULL; } 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?rev=604820&r1=604819&r2=604820&view=diff ============================================================================== --- webservices/sandesha/trunk/c/src/workers/sender_worker.c (original) +++ webservices/sandesha/trunk/c/src/workers/sender_worker.c Mon Dec 17 02:58:17 2007 @@ -18,6 +18,7 @@ #include <sandesha2_constants.h> #include <sandesha2_utils.h> #include <sandesha2_storage_mgr.h> +#include <sandesha2_create_seq_mgr.h> #include <sandesha2_sender_mgr.h> #include <sandesha2_seq_property_bean.h> #include <sandesha2_seq_property_mgr.h> @@ -165,16 +166,18 @@ axis2_status_t sandesha2_sender_worker_send( - axutil_env_t *env, + const axutil_env_t *env, axis2_conf_ctx_t *conf_ctx, axis2_char_t *msg_id, - axis2_bool_t persistent_msg_ctx) + axis2_bool_t persistent_msg_ctx, + sandesha2_storage_mgr_t *storage_mgr, + sandesha2_seq_property_mgr_t *seq_prop_mgr, + sandesha2_create_seq_mgr_t *create_seq_mgr, + sandesha2_sender_mgr_t *sender_mgr) { sandesha2_sender_worker_t *sender_worker = NULL; - sandesha2_storage_mgr_t *storage_mgr = NULL; sandesha2_sender_bean_t *sender_worker_bean = NULL; sandesha2_sender_bean_t *bean1 = NULL; - sandesha2_sender_mgr_t *sender_mgr = NULL; axis2_char_t *key = NULL; axutil_property_t *property = NULL; axis2_bool_t continue_sending = AXIS2_TRUE; @@ -192,9 +195,6 @@ AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[sandesha2]Entry:sandesha2_sender_worker_send"); - storage_mgr = sandesha2_utils_get_storage_mgr(env, - conf_ctx, axis2_conf_ctx_get_conf(conf_ctx, 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) { @@ -206,7 +206,6 @@ key = sandesha2_sender_bean_get_msg_ctx_ref_key(sender_worker_bean, env); if(!msg_ctx) { - axutil_allocator_switch_to_global_pool(env->allocator); if(persistent_msg_ctx) { AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, @@ -217,7 +216,6 @@ else msg_ctx = sandesha2_storage_mgr_retrieve_msg_ctx(storage_mgr, env, key, conf_ctx, AXIS2_TRUE); - axutil_allocator_switch_to_local_pool(env->allocator); } if(!msg_ctx) { @@ -227,7 +225,8 @@ return AXIS2_SUCCESS; } continue_sending = sandesha2_msg_retrans_adjuster_adjust_retrans(env, - sender_worker_bean, conf_ctx, storage_mgr); + sender_worker_bean, conf_ctx, storage_mgr, seq_prop_mgr, create_seq_mgr, + sender_mgr); sandesha2_sender_mgr_update(sender_mgr, env, sender_worker_bean); if(!continue_sending) { @@ -304,7 +303,7 @@ rm_msg_ctx)) { sandesha2_ack_mgr_piggyback_acks_if_present(env, rm_msg_ctx, - storage_mgr); + storage_mgr, seq_prop_mgr, sender_mgr); } if(!transport_out) @@ -350,7 +349,7 @@ msg_stored_key = sandesha2_sender_bean_get_msg_ctx_ref_key( bean1, env); sandesha2_storage_mgr_remove_msg_ctx(storage_mgr, env, - msg_stored_key); + msg_stored_key, conf_ctx); } } AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[sandesha2]msg_type:%d", msg_type); @@ -376,10 +375,10 @@ env), env); conf_ctx = axis2_msg_ctx_get_conf_ctx(msg_ctx, env); internal_seq_id = sandesha2_utils_get_seq_property(env, seq_id, - SANDESHA2_SEQ_PROP_INTERNAL_SEQ_ID, storage_mgr); + SANDESHA2_SEQ_PROP_INTERNAL_SEQ_ID, seq_prop_mgr); sandesha2_terminate_mgr_terminate_sending_side(env, conf_ctx, internal_seq_id, axis2_msg_ctx_get_server_side(msg_ctx, env), - storage_mgr); + storage_mgr, seq_prop_mgr, create_seq_mgr, sender_mgr); /* We have no more messages for this sequence. So continue send * status is false*/ status = AXIS2_FAILURE; @@ -430,19 +429,13 @@ AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[sandesha2]Entry:sandesha2_sender_worker_check_for_sync_res"); AXIS2_PARAM_CHECK(env->error, msg_ctx, AXIS2_FAILURE); - /*property = axis2_msg_ctx_get_property(msg_ctx, env, AXIS2_TRANSPORT_IN); - if(!property) - { - AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, - "[sandesha2] transport_in property not found"); - return AXIS2_SUCCESS; - }*/ res_msg_ctx = axis2_msg_ctx_create(env, axis2_msg_ctx_get_conf_ctx(msg_ctx, env), axis2_msg_ctx_get_transport_in_desc( msg_ctx, env), axis2_msg_ctx_get_transport_out_desc(msg_ctx, env)); - /* Setting the message as serverSide will let it go through the + /* + * Setting the message as serverSide will let it go through the * Message Receiver (may be callback MR). */ axis2_msg_ctx_set_server_side(res_msg_ctx, env, AXIS2_TRUE); @@ -509,7 +502,7 @@ else axis2_engine_receive(engine, env, res_msg_ctx); } - /* To avoid a second passing through incoming handlers at mep_client */ + /* To avoid a second passing through incoming handlers at mep_client*/ property = axutil_property_create_with_args(env, 0, 0, 0, AXIS2_VALUE_TRUE); axis2_msg_ctx_set_property(msg_ctx, env, AXIS2_HANDLER_ALREADY_VISITED, property); --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
