You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fx-dev@ws.apache.org by da...@apache.org on 2007/01/02 08:57:35 UTC
svn commit: r491758 [4/4] - in /webservices/sandesha/trunk/c: include/
samples/rm_1_1_echo/ samples/rm_echo/ samples/rm_mtom/ samples/rm_ping/
src/client/ src/core/ src/handlers/ src/msgprocessors/ src/storage/beans/
src/storage/inmemory/ src/storage/p...
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: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org