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]

Reply via email to