You are viewing a plain text version of this content. The canonical link for it is here.
Posted to sandesha-dev@ws.apache.org by da...@apache.org on 2007/05/05 11:38:53 UTC

svn commit: r535486 - in /webservices/sandesha/trunk/c: config/ include/ src/msgprocessors/ src/polling/ src/storage/ src/storage/beans/ src/storage/inmemory/ src/storage/mysql/ src/storage/sqlite/ src/util/ src/workers/

Author: damitha
Date: Sat May  5 02:38:52 2007
New Revision: 535486

URL: http://svn.apache.org/viewvc?view=rev&rev=535486
Log:
The single channel two-way invocation in RM 1.1 was not working. I tested this after a long
time. Corrected it.

Modified:
    webservices/sandesha/trunk/c/config/module.xml
    webservices/sandesha/trunk/c/include/sandesha2_constants.h
    webservices/sandesha/trunk/c/include/sandesha2_next_msg_bean.h
    webservices/sandesha/trunk/c/include/sandesha2_permanent_storage_mgr.h
    webservices/sandesha/trunk/c/include/sandesha2_polling_mgr.h
    webservices/sandesha/trunk/c/include/sandesha2_storage_mgr.h
    webservices/sandesha/trunk/c/include/sandesha2_utils.h
    webservices/sandesha/trunk/c/src/msgprocessors/app_msg_processor.c
    webservices/sandesha/trunk/c/src/msgprocessors/create_seq_res_msg_processor.c
    webservices/sandesha/trunk/c/src/msgprocessors/make_connection_msg_processor.c
    webservices/sandesha/trunk/c/src/polling/polling_mgr.c
    webservices/sandesha/trunk/c/src/storage/beans/next_msg_bean.c
    webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_storage_mgr.c
    webservices/sandesha/trunk/c/src/storage/mysql/permanent_invoker_mgr.c
    webservices/sandesha/trunk/c/src/storage/mysql/permanent_next_msg_mgr.c
    webservices/sandesha/trunk/c/src/storage/mysql/permanent_sender_mgr.c
    webservices/sandesha/trunk/c/src/storage/mysql/permanent_storage_mgr.c
    webservices/sandesha/trunk/c/src/storage/sqlite/permanent_storage_mgr.c
    webservices/sandesha/trunk/c/src/storage/storage_mgr.c
    webservices/sandesha/trunk/c/src/util/ack_mgr.c
    webservices/sandesha/trunk/c/src/util/msg_retrans_adjuster.c
    webservices/sandesha/trunk/c/src/util/sandesha2_utils.c
    webservices/sandesha/trunk/c/src/util/seq_mgr.c
    webservices/sandesha/trunk/c/src/workers/in_order_invoker.c
    webservices/sandesha/trunk/c/src/workers/sender.c
    webservices/sandesha/trunk/c/src/workers/sender_worker.c

Modified: webservices/sandesha/trunk/c/config/module.xml
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/config/module.xml?view=diff&rev=535486&r1=535485&r2=535486
==============================================================================
--- webservices/sandesha/trunk/c/config/module.xml (original)
+++ webservices/sandesha/trunk/c/config/module.xml Sat May  5 02:38:52 2007
@@ -81,5 +81,8 @@
     <parameter name="InvokeInOrder" locked="false">AXIS2_FALSE</parameter>
     <parameter name="MessageTypesToDrop" locked="false">none</parameter>
     <parameter name="MaxRetransCount" locked="false">10</parameter>
+    <parameter name="SenderSleepTime" locked="false">1</parameter>
+    <parameter name="InvokerSleepTime" locked="false">1</parameter>
+    <parameter name="PollingWaitTime" locked="false">3</parameter>
 
 </module>

Modified: webservices/sandesha/trunk/c/include/sandesha2_constants.h
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/include/sandesha2_constants.h?view=diff&rev=535486&r1=535485&r2=535486
==============================================================================
--- webservices/sandesha/trunk/c/include/sandesha2_constants.h (original)
+++ webservices/sandesha/trunk/c/include/sandesha2_constants.h Sat May  5 02:38:52 2007
@@ -509,6 +509,9 @@
     #define SANDESHA2_DB_SERVER "sandesha2_server"
     #define SANDESHA2_DB_USER "db_user"
     #define SANDESHA2_DB_PASSWORD "db_password"
+	#define SANDESHA2_SENDER_SLEEP  "SenderSleepTime"
+	#define SANDESHA2_INVOKER_SLEEP  "InvokerSleepTime"
+	#define SANDESHA2_POLLING_WAIT  "PollingWaitTime"
 /** @} */
 #ifdef __cplusplus
 }

Modified: webservices/sandesha/trunk/c/include/sandesha2_next_msg_bean.h
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/include/sandesha2_next_msg_bean.h?view=diff&rev=535486&r1=535485&r2=535486
==============================================================================
--- webservices/sandesha/trunk/c/include/sandesha2_next_msg_bean.h (original)
+++ webservices/sandesha/trunk/c/include/sandesha2_next_msg_bean.h Sat May  5 02:38:52 2007
@@ -72,7 +72,19 @@
 void AXIS2_CALL
 sandesha2_next_msg_bean_set_seq_id(
     sandesha2_next_msg_bean_t *next_msg_bean,
-    const axutil_env_t *env, axis2_char_t *seq_id);
+    const axutil_env_t *env, 
+    axis2_char_t *seq_id);
+
+axis2_char_t* AXIS2_CALL
+sandesha2_next_msg_bean_get_internal_seq_id(
+    sandesha2_rm_bean_t *next_msg_bean,
+    const axutil_env_t *env);
+
+void AXIS2_CALL
+sandesha2_next_msg_bean_set_internal_seq_id(
+    sandesha2_next_msg_bean_t *next_msg_bean,
+    const axutil_env_t *env, 
+    axis2_char_t *internal_seq_id);
 
 long AXIS2_CALL
 sandesha2_next_msg_bean_get_next_msg_no_to_process(

Modified: webservices/sandesha/trunk/c/include/sandesha2_permanent_storage_mgr.h
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/include/sandesha2_permanent_storage_mgr.h?view=diff&rev=535486&r1=535485&r2=535486
==============================================================================
--- webservices/sandesha/trunk/c/include/sandesha2_permanent_storage_mgr.h (original)
+++ webservices/sandesha/trunk/c/include/sandesha2_permanent_storage_mgr.h Sat May  5 02:38:52 2007
@@ -89,7 +89,8 @@
     sandesha2_storage_mgr_t *storage_mgr, 
     const axutil_env_t *env, 
     axis2_char_t *key,
-    axis2_conf_ctx_t *conf_ctx);
+    axis2_conf_ctx_t *conf_ctx,
+    const axis2_bool_t persistent);
 
 /** @} */
 #ifdef __cplusplus

Modified: webservices/sandesha/trunk/c/include/sandesha2_polling_mgr.h
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/include/sandesha2_polling_mgr.h?view=diff&rev=535486&r1=535485&r2=535486
==============================================================================
--- webservices/sandesha/trunk/c/include/sandesha2_polling_mgr.h (original)
+++ webservices/sandesha/trunk/c/include/sandesha2_polling_mgr.h Sat May  5 02:38:52 2007
@@ -69,7 +69,8 @@
 sandesha2_polling_mgr_start (
     sandesha2_polling_mgr_t *polling_mgr, 
     const axutil_env_t *env, 
-    axis2_conf_ctx_t *conf_ctx);
+    axis2_conf_ctx_t *conf_ctx,
+    const axis2_char_t *internal_seq_id);
             
 void AXIS2_CALL
 sandesha2_polling_mgr_set_poll(
@@ -86,7 +87,7 @@
 sandesha2_polling_mgr_schedule_polling_request(
     sandesha2_polling_mgr_t *polling_mgr,
     const axutil_env_t *env,
-    axis2_char_t *internal_seq_id);
+    const axis2_char_t *internal_seq_id);
                    
 /** @} */
 #ifdef __cplusplus

Modified: webservices/sandesha/trunk/c/include/sandesha2_storage_mgr.h
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/include/sandesha2_storage_mgr.h?view=diff&rev=535486&r1=535485&r2=535486
==============================================================================
--- webservices/sandesha/trunk/c/include/sandesha2_storage_mgr.h (original)
+++ webservices/sandesha/trunk/c/include/sandesha2_storage_mgr.h Sat May  5 02:38:52 2007
@@ -122,7 +122,8 @@
                 sandesha2_storage_mgr_t *storage_mgr,
                 const axutil_env_t *env,
                 axis2_char_t *key,
-                axis2_conf_ctx_t *conf_ctx);
+                axis2_conf_ctx_t *conf_ctx,
+                const axis2_bool_t persistent);
             
     axis2_status_t (AXIS2_CALL *
             store_msg_ctx)(
@@ -287,7 +288,8 @@
     sandesha2_storage_mgr_t *storage_mgr,
     const axutil_env_t *env,
     axis2_char_t *key,
-    axis2_conf_ctx_t *conf_ctx);
+    axis2_conf_ctx_t *conf_ctx,
+    const axis2_bool_t persistent);
 
 /**
  * Store the application message context. When Sandesha2 handlers

Modified: webservices/sandesha/trunk/c/include/sandesha2_utils.h
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/include/sandesha2_utils.h?view=diff&rev=535486&r1=535485&r2=535486
==============================================================================
--- webservices/sandesha/trunk/c/include/sandesha2_utils.h (original)
+++ webservices/sandesha/trunk/c/include/sandesha2_utils.h Sat May  5 02:38:52 2007
@@ -119,7 +119,8 @@
 AXIS2_EXTERN axis2_status_t AXIS2_CALL                        
 sandesha2_utils_start_polling_mgr(
     const axutil_env_t *env,
-    axis2_conf_ctx_t *conf_ctx);
+    axis2_conf_ctx_t *conf_ctx,
+    const axis2_char_t *internal_seq_id);
                         
 AXIS2_EXTERN axis2_char_t* AXIS2_CALL
 sandesha2_utils_get_outgoing_internal_seq_id(

Modified: webservices/sandesha/trunk/c/src/msgprocessors/app_msg_processor.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/msgprocessors/app_msg_processor.c?view=diff&rev=535486&r1=535485&r2=535486
==============================================================================
--- webservices/sandesha/trunk/c/src/msgprocessors/app_msg_processor.c (original)
+++ webservices/sandesha/trunk/c/src/msgprocessors/app_msg_processor.c Sat May  5 02:38:52 2007
@@ -696,7 +696,6 @@
     if(!axis2_msg_ctx_get_msg_id(msg_ctx, env))
         axis2_msg_ctx_set_message_id(msg_ctx, env, axutil_uuid_gen(env));
     storage_key = axutil_uuid_gen(env);
-   
     if(is_svr_side)
     {
         sandesha2_seq_t *req_seq = NULL;

Modified: webservices/sandesha/trunk/c/src/msgprocessors/create_seq_res_msg_processor.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/msgprocessors/create_seq_res_msg_processor.c?view=diff&rev=535486&r1=535485&r2=535486
==============================================================================
--- webservices/sandesha/trunk/c/src/msgprocessors/create_seq_res_msg_processor.c (original)
+++ webservices/sandesha/trunk/c/src/msgprocessors/create_seq_res_msg_processor.c Sat May  5 02:38:52 2007
@@ -323,6 +323,7 @@
         
         next_bean = sandesha2_next_msg_bean_create(env);
         sandesha2_next_msg_bean_set_seq_id(next_bean, env, offered_seq_id);
+        sandesha2_next_msg_bean_set_internal_seq_id(next_bean, env, int_seq_id);
         sandesha2_next_msg_bean_set_next_msg_no_to_process(next_bean, env, 1);
         
         rm_spec_ver = sandesha2_msg_ctx_get_rm_spec_ver(rm_msg_ctx, env);
@@ -344,7 +345,7 @@
         if(ref_msg_store_key)
         {
             ref_msg_ctx = sandesha2_storage_mgr_retrieve_msg_ctx(storage_mgr, 
-                env, ref_msg_store_key, conf_ctx);
+                env, ref_msg_store_key, conf_ctx, AXIS2_FALSE);
         }
         new_msg_store_key = axutil_uuid_gen(env);
         sandesha2_storage_mgr_store_msg_ctx(storage_mgr, env, new_msg_store_key, 
@@ -354,7 +355,9 @@
         sandesha2_next_msg_bean_set_polling_mode(next_bean, env, polling_mode);
         /* If polling_mode is true, starting the polling manager */
         if(polling_mode)
-            sandesha2_utils_start_polling_mgr(env, conf_ctx);
+        {
+            sandesha2_utils_start_polling_mgr(env, conf_ctx, int_seq_id);
+        }
         next_bean_mgr = sandesha2_storage_mgr_get_next_msg_mgr(storage_mgr,
             env);
         sandesha2_next_msg_mgr_insert(next_bean_mgr, env, next_bean);
@@ -403,7 +406,7 @@
         tmp_bean = axutil_array_list_get(found_list, env, i);
         key = sandesha2_sender_bean_get_msg_ctx_ref_key(tmp_bean, env);
         app_msg_ctx = sandesha2_storage_mgr_retrieve_msg_ctx(storage_mgr, env,
-                        key, conf_ctx);
+            key, conf_ctx, AXIS2_FALSE);
         if(!app_msg_ctx)
         {
             AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[sandesha2] Unavailable"

Modified: webservices/sandesha/trunk/c/src/msgprocessors/make_connection_msg_processor.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/msgprocessors/make_connection_msg_processor.c?view=diff&rev=535486&r1=535485&r2=535486
==============================================================================
--- webservices/sandesha/trunk/c/src/msgprocessors/make_connection_msg_processor.c (original)
+++ webservices/sandesha/trunk/c/src/msgprocessors/make_connection_msg_processor.c Sat May  5 02:38:52 2007
@@ -157,6 +157,7 @@
     sandesha2_make_connection_t *make_conn = NULL;
     sandesha2_storage_mgr_t *storage_mgr = NULL;
     sandesha2_sender_mgr_t *sender_mgr = NULL;
+    sandesha2_seq_property_mgr_t *seq_prop_mgr = NULL;
     sandesha2_sender_bean_t *find_sender_bean = NULL;
     sandesha2_sender_bean_t *sender_bean = NULL;
     sandesha2_sender_bean_t *bean1 = NULL;
@@ -172,6 +173,7 @@
     axis2_transport_out_desc_t *transport_out = NULL;
     axis2_char_t *msg_storage_key = NULL;
     axis2_char_t *seq_id = NULL;
+    axis2_char_t *internal_seq_id = NULL;
     axis2_op_ctx_t *op_ctx = NULL;
     axis2_char_t *msg_id = NULL;
     axis2_transport_sender_t *transport_sender = NULL;
@@ -180,6 +182,7 @@
     axis2_bool_t continue_sending = AXIS2_TRUE;
     axis2_char_t *qualified_for_sending = NULL;
     sandesha2_property_bean_t *prop_bean = NULL;
+    sandesha2_seq_property_bean_t *int_seq_bean = NULL;
     axutil_array_list_t *msgs_not_to_send = NULL;
 
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
@@ -209,7 +212,15 @@
         storage_mgr = sandesha2_utils_get_storage_mgr(env, conf_ctx, 
                         axis2_conf_ctx_get_conf(conf_ctx, env));
     if(storage_mgr)
+    {
         sender_mgr = sandesha2_storage_mgr_get_retrans_mgr(storage_mgr, env);
+        seq_prop_mgr = sandesha2_storage_mgr_get_seq_property_mgr(storage_mgr, 
+            env);
+    }
+    int_seq_bean = sandesha2_seq_property_mgr_retrieve(seq_prop_mgr, env, 
+        seq_id, SANDESHA2_SEQ_PROP_INTERNAL_SEQ_ID);
+    if(int_seq_bean)
+        internal_seq_id = sandesha2_seq_property_bean_get_value(int_seq_bean, env);
     /* Selecting the set of sender beans that suit the given criteria */
     find_sender_bean = sandesha2_sender_bean_create(env);
     if(find_sender_bean)
@@ -226,8 +237,8 @@
             sandesha2_sender_bean_set_wsrm_anon_uri(find_sender_bean, env, 
                 epr_address);
     }
-    if(seq_id)
-        sandesha2_sender_bean_set_seq_id(find_sender_bean, env, seq_id);
+    if(internal_seq_id)
+        sandesha2_sender_bean_set_seq_id(find_sender_bean, env, internal_seq_id);
     /* Find the beans that go with the criteria of the passed sender bean */
     if(find_sender_bean)
     {
@@ -240,6 +251,7 @@
     /* Selecting a bean to send randomly. TODO - Should use a better mechanism */
     if(retrans_list)
         size = axutil_array_list_size(retrans_list, env);
+    printf("size:%d\n", size);
     if(size > 0)
     {
        unsigned int rand_var = axutil_rand_get_seed_value_based_on_time(env);
@@ -260,6 +272,8 @@
     }
     if(!sender_bean)
     {
+        AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
+            "[sandesha2]sender_bean is NULL. So returning");
         return AXIS2_SUCCESS;
     }
     transport_out = axis2_msg_ctx_get_transport_out_desc(msg_ctx, env);
@@ -274,7 +288,7 @@
     msg_storage_key = sandesha2_sender_bean_get_msg_ctx_ref_key(sender_bean, 
         env);
     return_msg_ctx = sandesha2_storage_mgr_retrieve_msg_ctx(storage_mgr, env, 
-        msg_storage_key, conf_ctx);
+        msg_storage_key, conf_ctx, AXIS2_TRUE);
     return_rm_msg_ctx = sandesha2_msg_init_init_msg(env, return_msg_ctx);
     add_msg_pending_header(env, return_rm_msg_ctx, pending);
     set_transport_properties(env, return_msg_ctx, rm_msg_ctx);
@@ -305,7 +319,6 @@
         sender_bean, conf_ctx, storage_mgr);
     if(!continue_sending)
     {
-        printf("do not continue\n");
         AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
             "[sandesha2] Do not continue sending the message as response to"\
                 "MakeConnection message");
@@ -319,7 +332,6 @@
     if(qualified_for_sending && 0 != axutil_strcmp(
         qualified_for_sending, AXIS2_VALUE_TRUE))
     {
-        printf("not qualified for sending as reply ot MakeConnection\n");
         AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
             "[sandesha2] Message is not qualified for sending as reply to "\
                 "MakeConnection message");
@@ -353,7 +365,6 @@
         }
         if(continue_sending)
         {
-            printf("continue sending is true\n");
             AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[sandesha2] Continue "\
                 "Sending is true. So returning from make_connection_msg_processor");
             return AXIS2_SUCCESS;
@@ -463,17 +474,18 @@
     if(make_conn_msg_ctx && return_msg_ctx)
     {
         axis2_http_out_transport_info_t *out_info = NULL;
-        /*property = sandesha2_msg_ctx_get_property(make_conn_msg_ctx, env, 
-            AXIS2_TRANSPORT_OUT);
-        axutil_property_set_own_value(property, env, AXIS2_FALSE);
-        axis2_msg_ctx_set_property(return_msg_ctx, env, AXIS2_TRANSPORT_OUT, 
-            axutil_property_clone(property, env), AXIS2_FALSE);*/
+        axis2_http_out_transport_info_t *temp_out_info = NULL;
         out_stream = sandesha2_msg_ctx_get_transport_out_stream(make_conn_msg_ctx, 
             env);
         axis2_msg_ctx_set_transport_out_stream(return_msg_ctx, env, out_stream);
-        out_info = (axis2_http_out_transport_info_t *) 
-            sandesha2_msg_ctx_get_http_out_transport_info(make_conn_msg_ctx, env);
-        axis2_msg_ctx_set_http_out_transport_info(return_msg_ctx, env, out_info);
+        temp_out_info = (axis2_http_out_transport_info_t *) 
+            axis2_msg_ctx_get_http_out_transport_info(return_msg_ctx, env);
+        if(!temp_out_info)
+        {
+            out_info = (axis2_http_out_transport_info_t *) 
+                sandesha2_msg_ctx_get_http_out_transport_info(make_conn_msg_ctx, env);
+            axis2_msg_ctx_set_http_out_transport_info(return_msg_ctx, env, out_info);
+        }
     }
 }
 

Modified: webservices/sandesha/trunk/c/src/polling/polling_mgr.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/polling/polling_mgr.c?view=diff&rev=535486&r1=535485&r2=535486
==============================================================================
--- webservices/sandesha/trunk/c/src/polling/polling_mgr.c (original)
+++ webservices/sandesha/trunk/c/src/polling/polling_mgr.c Sat May  5 02:38:52 2007
@@ -34,6 +34,7 @@
 #include <axutil_rand.h>
 #include <stdio.h>
 #include <platforms/axutil_platform_auto_sense.h>
+#include <axutil_types.h>
 
 
 /** 
@@ -149,7 +150,8 @@
 sandesha2_polling_mgr_start (
     sandesha2_polling_mgr_t *polling_mgr, 
     const axutil_env_t *env, 
-    axis2_conf_ctx_t *conf_ctx)
+    axis2_conf_ctx_t *conf_ctx,
+    const axis2_char_t *internal_seq_id)
 {
     sandesha2_storage_mgr_t *storage_mgr = NULL;
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
@@ -163,12 +165,15 @@
     if(!polling_mgr->conf_ctx)
     {
         axutil_thread_mutex_unlock(polling_mgr->mutex);
+        AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "conf_ctx is NULL");
         return AXIS2_FAILURE;
     }
     storage_mgr = sandesha2_utils_get_storage_mgr(env, 
         polling_mgr->conf_ctx, 
         axis2_conf_ctx_get_conf(polling_mgr->conf_ctx, env));
     sandesha2_polling_mgr_set_poll(polling_mgr, env, AXIS2_TRUE);
+    sandesha2_polling_mgr_schedule_polling_request(polling_mgr, env, 
+        internal_seq_id);
     sandesha2_polling_mgr_run(polling_mgr, env, storage_mgr);
     axutil_thread_mutex_unlock(polling_mgr->mutex);
     return AXIS2_SUCCESS;
@@ -230,6 +235,7 @@
         sandesha2_sender_mgr_t *sender_bean_mgr = NULL;
         int size = 0;
         axis2_char_t *seq_id = NULL;
+        axis2_char_t *make_conn_seq_id = NULL;
         axis2_char_t *ref_msg_key = NULL;
         axis2_char_t *seq_prop_key = NULL;
         axis2_char_t *reply_to = NULL;
@@ -240,8 +246,25 @@
         axis2_msg_ctx_t *make_conn_msg_ctx = NULL;
         axis2_endpoint_ref_t *to = NULL;
         axutil_property_t *property = NULL;
+        axutil_qname_t *qname = NULL;
+        axutil_param_t *wait_time_param = NULL;
+        int wait_time = 0;
+        axis2_conf_t *conf = NULL;
+        axis2_module_desc_t *module_desc = NULL;
         sandesha2_transaction_t *transaction = NULL;
-        AXIS2_SLEEP(SANDESHA2_POLLING_MANAGER_WAIT_TIME);
+        axis2_status_t status = AXIS2_FAILURE;
+
+        conf = axis2_conf_ctx_get_conf(polling_mgr->conf_ctx, env);
+        qname = axutil_qname_create(env, "sandesha2", NULL, NULL);
+        module_desc = axis2_conf_get_module(conf, env, qname);
+        wait_time_param = axis2_module_desc_get_param(module_desc, env, 
+            SANDESHA2_POLLING_WAIT);
+        if(wait_time_param)
+        {
+            wait_time = AXIS2_ATOI(axutil_param_get_value(wait_time_param, env));
+        }
+        axutil_qname_free(qname, env);
+        AXIS2_SLEEP(wait_time);
         transaction = sandesha2_storage_mgr_get_transaction(storage_mgr, env);
         next_msg_mgr = sandesha2_storage_mgr_get_next_msg_mgr(
                         storage_mgr, env);
@@ -255,7 +278,7 @@
         {
             seq_id = axutil_array_list_get(polling_mgr->scheduled_polling_reqs, 
                 env, 0);
-            axutil_array_list_remove(polling_mgr->scheduled_polling_reqs, env, 0);
+            /*axutil_array_list_remove(polling_mgr->scheduled_polling_reqs, env, 0);*/
         }
         if(!seq_id)
         {
@@ -291,7 +314,7 @@
             {
                 sandesha2_next_msg_bean_set_polling_mode(find_bean, env, 
                     AXIS2_TRUE);
-                sandesha2_next_msg_bean_set_seq_id(find_bean, env, seq_id);
+                sandesha2_next_msg_bean_set_internal_seq_id(find_bean, env, seq_id);
                 next_msg_bean = sandesha2_next_msg_mgr_find_unique(next_msg_mgr,
                     env, find_bean);
             }
@@ -299,28 +322,31 @@
         /* If no valid entry is found, try again later */
         if(!next_msg_bean)
         {
+            AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
+                "No valid MakeConnection entry is found.");
             sandesha2_transaction_rollback(transaction, env);
             continue;
         }
-        seq_id = sandesha2_next_msg_bean_get_seq_id((sandesha2_rm_bean_t *) 
+        make_conn_seq_id = sandesha2_next_msg_bean_get_seq_id((sandesha2_rm_bean_t *) 
             next_msg_bean, env);
         /* Create a MakeConnection message */
         ref_msg_key = sandesha2_next_msg_bean_get_ref_msg_key(next_msg_bean, env);
-        seq_prop_key = seq_id;
+        seq_prop_key = make_conn_seq_id;
         reply_to = sandesha2_utils_get_seq_property(env, seq_prop_key, 
             SANDESHA2_SEQ_PROP_REPLY_TO_EPR, storage_mgr);
         if(sandesha2_utils_is_wsrm_anon_reply_to(env, reply_to))
             wsrm_anon_reply_to_uri = reply_to;
         ref_msg_ctx = sandesha2_storage_mgr_retrieve_msg_ctx(storage_mgr, env, 
-            ref_msg_key, polling_mgr->conf_ctx);
+            ref_msg_key, polling_mgr->conf_ctx, AXIS2_FALSE);
         if(ref_msg_ctx)
             ref_rm_msg_ctx = sandesha2_msg_init_init_msg(env, ref_msg_ctx);
         make_conn_rm_msg_ctx = 
             sandesha2_msg_creator_create_make_connection_msg(env, 
-            ref_rm_msg_ctx, seq_id, wsrm_anon_reply_to_uri, storage_mgr);
+            ref_rm_msg_ctx, make_conn_seq_id, wsrm_anon_reply_to_uri, storage_mgr);
         if(!make_conn_rm_msg_ctx)
         {
             sandesha2_transaction_rollback(transaction, env);
+            AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "No memory");
             AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
             return NULL;
         }
@@ -378,8 +404,15 @@
             sandesha2_sender_mgr_insert(sender_bean_mgr, env, 
                 make_conn_sender_bean);
         }
-        sandesha2_utils_execute_and_store(env, make_conn_rm_msg_ctx, 
+        status = sandesha2_utils_execute_and_store(env, make_conn_rm_msg_ctx, 
             make_conn_msg_store_key);
+        if(!status)
+        {
+            AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
+                "[sandesha2]make_connection sending failed");
+            sandesha2_transaction_rollback(transaction, env);
+            return NULL;
+        }
         if(transaction)
         {
             sandesha2_transaction_commit(transaction, env);
@@ -409,10 +442,10 @@
 sandesha2_polling_mgr_schedule_polling_request(
     sandesha2_polling_mgr_t *polling_mgr,
     const axutil_env_t *env,
-    axis2_char_t *internal_seq_id)
+    const axis2_char_t *internal_seq_id)
 {
     if(!axutil_array_list_contains(polling_mgr->scheduled_polling_reqs, env, 
-        internal_seq_id))
+        (axis2_char_t *)internal_seq_id))
     {
         axutil_array_list_add(polling_mgr->scheduled_polling_reqs, env, 
             internal_seq_id);

Modified: webservices/sandesha/trunk/c/src/storage/beans/next_msg_bean.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/storage/beans/next_msg_bean.c?view=diff&rev=535486&r1=535485&r2=535486
==============================================================================
--- webservices/sandesha/trunk/c/src/storage/beans/next_msg_bean.c (original)
+++ webservices/sandesha/trunk/c/src/storage/beans/next_msg_bean.c Sat May  5 02:38:52 2007
@@ -27,6 +27,7 @@
     sandesha2_next_msg_bean_t next_msg_bean;
     sandesha2_rm_bean_t *rm_bean_impl;
 	axis2_char_t *seq_id;
+	axis2_char_t *internal_seq_id;
     axis2_char_t *ref_msg_key;
     axis2_bool_t polling_mode;
 	long msg_no;
@@ -61,6 +62,7 @@
 	}
 	/* init the properties. */
 	next_msg_bean_impl->seq_id = NULL;
+	next_msg_bean_impl->internal_seq_id = NULL;
     next_msg_bean_impl->ref_msg_key = NULL;
 	next_msg_bean_impl->msg_no = -1;
     next_msg_bean_impl->polling_mode = AXIS2_FALSE;
@@ -87,6 +89,7 @@
 	}
 	/* init the properties. */
 	next_msg_bean_impl->seq_id = (axis2_char_t*)axutil_strdup(env, seq_id);
+	next_msg_bean_impl->internal_seq_id = NULL;
     next_msg_bean_impl->ref_msg_key = NULL;
 	next_msg_bean_impl->msg_no = msg_no;
     next_msg_bean_impl->polling_mode = AXIS2_FALSE;
@@ -112,6 +115,11 @@
 		AXIS2_FREE(env->allocator, next_msg_bean_impl->seq_id);
 		next_msg_bean_impl->seq_id= NULL;
 	}
+	if(next_msg_bean_impl->internal_seq_id)
+	{
+		AXIS2_FREE(env->allocator, next_msg_bean_impl->internal_seq_id);
+		next_msg_bean_impl->internal_seq_id= NULL;
+	}
 	if(next_msg_bean_impl->ref_msg_key)
 	{
 		AXIS2_FREE(env->allocator, next_msg_bean_impl->ref_msg_key);
@@ -174,6 +182,34 @@
 	next_msg_bean_impl->seq_id = (axis2_char_t*) axutil_strdup(env, seq_id); 
 }
 
+axis2_char_t* AXIS2_CALL
+sandesha2_next_msg_bean_get_internal_seq_id(
+    sandesha2_rm_bean_t *next_msg_bean,
+    const axutil_env_t *env)
+{
+    sandesha2_next_msg_bean_impl_t *next_msg_bean_impl = NULL;
+    next_msg_bean_impl = SANDESHA2_INTF_TO_IMPL(next_msg_bean);
+	return next_msg_bean_impl->internal_seq_id;
+}
+
+
+void AXIS2_CALL
+sandesha2_next_msg_bean_set_internal_seq_id(
+    sandesha2_next_msg_bean_t *next_msg_bean,
+    const axutil_env_t *env, 
+    axis2_char_t *internal_seq_id)
+{
+    sandesha2_next_msg_bean_impl_t *next_msg_bean_impl = NULL;
+    next_msg_bean_impl = SANDESHA2_INTF_TO_IMPL(next_msg_bean);
+	if(next_msg_bean_impl->internal_seq_id)
+	{
+		AXIS2_FREE(env->allocator, next_msg_bean_impl->internal_seq_id);
+		next_msg_bean_impl->internal_seq_id = NULL;
+	}
+
+	next_msg_bean_impl->internal_seq_id = (axis2_char_t*) axutil_strdup(env, 
+        internal_seq_id); 
+}
 
 long AXIS2_CALL
 sandesha2_next_msg_bean_get_next_msg_no_to_process(

Modified: webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_storage_mgr.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_storage_mgr.c?view=diff&rev=535486&r1=535485&r2=535486
==============================================================================
--- webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_storage_mgr.c (original)
+++ webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_storage_mgr.c Sat May  5 02:38:52 2007
@@ -126,7 +126,8 @@
     sandesha2_storage_mgr_t *storage,
     const axutil_env_t *env,
     axis2_char_t *key,
-    axis2_conf_ctx_t *conf_ctx);
+    axis2_conf_ctx_t *conf_ctx,
+    const axis2_bool_t persistent);
 		
 axis2_status_t AXIS2_CALL
 sandesha2_inmemory_storage_mgr_store_msg_ctx(
@@ -390,7 +391,8 @@
     sandesha2_storage_mgr_t *storage_mgr,
     const axutil_env_t *env,
     axis2_char_t *key,
-    axis2_conf_ctx_t *conf_ctx)
+    axis2_conf_ctx_t *conf_ctx,
+    const axis2_bool_t persistent)
 {
     axutil_hash_t *storage_map = NULL;
     axutil_property_t *property = NULL;

Modified: webservices/sandesha/trunk/c/src/storage/mysql/permanent_invoker_mgr.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/storage/mysql/permanent_invoker_mgr.c?view=diff&rev=535486&r1=535485&r2=535486
==============================================================================
--- webservices/sandesha/trunk/c/src/storage/mysql/permanent_invoker_mgr.c (original)
+++ webservices/sandesha/trunk/c/src/storage/mysql/permanent_invoker_mgr.c Sat May  5 02:38:52 2007
@@ -45,37 +45,42 @@
     void *data)
 {
     MYSQL_ROW row;
+    int num_rows, i = 0;
     sandesha2_invoker_bean_t *bean = NULL;
     sandesha2_bean_mgr_args_t *args = (sandesha2_bean_mgr_args_t *) data;
     const axutil_env_t *env = args->env;
     axutil_array_list_t *data_list = (axutil_array_list_t *) args->data;
-    if((row = mysql_fetch_row(res)) != NULL)
+    num_rows = mysql_num_rows(res);
+    if(num_rows > 0)
     {
         if(!data_list)
         {
             data_list = axutil_array_list_create(env, 0);
             args->data = data_list;
         }
-        bean = sandesha2_invoker_bean_create(env);
-        sandesha2_invoker_bean_set_msg_ctx_ref_key(bean, env, row[0]);
-        sandesha2_invoker_bean_set_msg_no(bean, env, atol(row[1]));
-        sandesha2_invoker_bean_set_seq_id(bean, env, row[2]);
-        sandesha2_invoker_bean_set_invoked(bean, env, AXIS2_ATOI(row[3]));
-        axutil_array_list_add(data_list, env, bean);
     }
     else
     {
         args->data = NULL;
         return 0;
     }
-    while((row = mysql_fetch_row(res)) != NULL)
+    for(i = 0; i < num_rows; i++)
     {
-        bean = sandesha2_invoker_bean_create(env);
-        sandesha2_invoker_bean_set_msg_ctx_ref_key(bean, env, row[0]);
-        sandesha2_invoker_bean_set_msg_no(bean, env, atol(row[1]));
-        sandesha2_invoker_bean_set_seq_id(bean, env, row[2]);
-        sandesha2_invoker_bean_set_invoked(bean, env, AXIS2_ATOI(row[3]));
-        axutil_array_list_add(data_list, env, bean);
+        if((row = mysql_fetch_row(res)) != NULL)
+        {
+            unsigned long *lengths = NULL;
+            lengths = mysql_fetch_lengths(res);
+            bean = sandesha2_invoker_bean_create(env);
+            if(0 < (int) lengths[0])
+                sandesha2_invoker_bean_set_msg_ctx_ref_key(bean, env, row[0]);
+            if(0 < (int) lengths[1])
+                sandesha2_invoker_bean_set_msg_no(bean, env, atol(row[1]));
+            if(0 < (int) lengths[2])
+                sandesha2_invoker_bean_set_seq_id(bean, env, row[2]);
+            if(0 < (int) lengths[3])
+                sandesha2_invoker_bean_set_invoked(bean, env, AXIS2_ATOI(row[3]));
+            axutil_array_list_add(data_list, env, bean);
+        }
     }
     return 0;
 }
@@ -91,15 +96,21 @@
     sandesha2_invoker_bean_t *bean = (sandesha2_invoker_bean_t *) args->data;
     if((row = mysql_fetch_row(res)) != NULL)
     {
+        unsigned long *lengths = NULL;
+        lengths = mysql_fetch_lengths(res);
         if(!bean)
         {
             bean = sandesha2_invoker_bean_create(env);
             args->data = bean;
         }
-        sandesha2_invoker_bean_set_msg_ctx_ref_key(bean, env, row[0]);
-        sandesha2_invoker_bean_set_msg_no(bean, env, atol(row[1]));
-        sandesha2_invoker_bean_set_seq_id(bean, env, row[2]);
-        sandesha2_invoker_bean_set_invoked(bean, env, AXIS2_ATOI(row[3]));
+        if(0 < (int) lengths[0])
+            sandesha2_invoker_bean_set_msg_ctx_ref_key(bean, env, row[0]);
+        if(0 < (int) lengths[1])
+            sandesha2_invoker_bean_set_msg_no(bean, env, atol(row[1]));
+        if(0 < (int) lengths[2])
+            sandesha2_invoker_bean_set_seq_id(bean, env, row[2]);
+        if(0 < (int) lengths[3])
+            sandesha2_invoker_bean_set_invoked(bean, env, AXIS2_ATOI(row[3]));
     }
     else
     {

Modified: webservices/sandesha/trunk/c/src/storage/mysql/permanent_next_msg_mgr.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/storage/mysql/permanent_next_msg_mgr.c?view=diff&rev=535486&r1=535485&r2=535486
==============================================================================
--- webservices/sandesha/trunk/c/src/storage/mysql/permanent_next_msg_mgr.c (original)
+++ webservices/sandesha/trunk/c/src/storage/mysql/permanent_next_msg_mgr.c Sat May  5 02:38:52 2007
@@ -70,15 +70,18 @@
     {
         if((row = mysql_fetch_row(res)) != NULL)
         {
+            unsigned long *lengths = NULL;
+            lengths = mysql_fetch_lengths(res);
             bean = sandesha2_next_msg_bean_create(env);
-            sandesha2_next_msg_bean_set_seq_id(bean, env, row[0]);
-            if(row[1] && 0 != axutil_strcmp("(null)", row[1]))
-            {
+            if(0 < (int) lengths[0])
+                sandesha2_next_msg_bean_set_seq_id(bean, env, row[0]);
+            if(0 < (int) lengths[1])
                 sandesha2_next_msg_bean_set_ref_msg_key(bean, env, row[1]);
-            }
-            sandesha2_next_msg_bean_set_polling_mode(bean, env, AXIS2_ATOI(row[2]));
-            sandesha2_next_msg_bean_set_next_msg_no_to_process(bean, env, 
-                atol(row[3]));
+            if(0 < (int) lengths[2])
+                sandesha2_next_msg_bean_set_polling_mode(bean, env, AXIS2_ATOI(row[2]));
+            if(0 < (int) lengths[3])
+                sandesha2_next_msg_bean_set_next_msg_no_to_process(bean, env, 
+                    atol(row[3]));
             axutil_array_list_add(data_list, env, bean);
         }
     }
@@ -435,6 +438,8 @@
     long temp_next_msg_no = 0;
     axis2_char_t *seq_id = NULL;
     axis2_char_t *temp_seq_id = NULL;
+    axis2_char_t *internal_seq_id = NULL;
+    axis2_char_t *temp_internal_seq_id = NULL;
     sandesha2_permanent_next_msg_mgr_t *next_msg_mgr_impl = NULL;
     AXIS2_ENV_CHECK(env, AXIS2_FALSE);
     next_msg_mgr_impl = SANDESHA2_INTF_TO_IMPL(next_msg_mgr);
@@ -449,6 +454,14 @@
     seq_id = sandesha2_next_msg_bean_get_seq_id(bean, env);
     temp_seq_id = sandesha2_next_msg_bean_get_seq_id(candidate, env);
     if(seq_id && temp_seq_id && 0 != axutil_strcmp(seq_id, temp_seq_id))
+    {
+        equal = AXIS2_FALSE;
+    }
+    internal_seq_id = sandesha2_next_msg_bean_get_internal_seq_id(bean, env);
+    temp_internal_seq_id = sandesha2_next_msg_bean_get_internal_seq_id(
+        candidate, env);
+    if(internal_seq_id && temp_internal_seq_id && 0 != axutil_strcmp(
+        internal_seq_id, temp_internal_seq_id))
     {
         equal = AXIS2_FALSE;
     }

Modified: webservices/sandesha/trunk/c/src/storage/mysql/permanent_sender_mgr.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/storage/mysql/permanent_sender_mgr.c?view=diff&rev=535486&r1=535485&r2=535486
==============================================================================
--- webservices/sandesha/trunk/c/src/storage/mysql/permanent_sender_mgr.c (original)
+++ webservices/sandesha/trunk/c/src/storage/mysql/permanent_sender_mgr.c Sat May  5 02:38:52 2007
@@ -114,23 +114,37 @@
     sandesha2_sender_bean_t *bean = (sandesha2_sender_bean_t *) args->data;
     if((row = mysql_fetch_row(res)) != NULL)
     {
+        unsigned long *lengths = NULL;
+        lengths = mysql_fetch_lengths(res);
         if(!bean)
         {
             bean = sandesha2_sender_bean_create(env);
             args->data = bean;
         }
-        sandesha2_sender_bean_set_msg_id(bean, env, row[0]);
-        sandesha2_sender_bean_set_msg_ctx_ref_key(bean, env, row[1]);
-        sandesha2_sender_bean_set_internal_seq_id(bean, env, row[2]);
-        sandesha2_sender_bean_set_sent_count(bean, env, AXIS2_ATOI(row[3]));
-        sandesha2_sender_bean_set_msg_no(bean, env, atol(row[4]));
-        sandesha2_sender_bean_set_send(bean, env, AXIS2_ATOI(row[5]));
-        sandesha2_sender_bean_set_resend(bean, env, AXIS2_ATOI(row[6]));
-        sandesha2_sender_bean_set_time_to_send(bean, env, atol(row[7]));
-        sandesha2_sender_bean_set_msg_type(bean, env, AXIS2_ATOI(row[8]));
-        sandesha2_sender_bean_set_seq_id(bean, env, row[9]);
-        sandesha2_sender_bean_set_wsrm_anon_uri(bean, env, row[10]);
-        sandesha2_sender_bean_set_to_address(bean, env, row[11]);
+        if(0 < (int) lengths[0])
+            sandesha2_sender_bean_set_msg_id(bean, env, row[0]);
+        if(0 < (int) lengths[1])
+            sandesha2_sender_bean_set_msg_ctx_ref_key(bean, env, row[1]);
+        if(0 < (int) lengths[2])
+            sandesha2_sender_bean_set_internal_seq_id(bean, env, row[2]);
+        if(0 < (int) lengths[3])
+            sandesha2_sender_bean_set_sent_count(bean, env, AXIS2_ATOI(row[3]));
+        if(0 < (int) lengths[4])
+            sandesha2_sender_bean_set_msg_no(bean, env, atol(row[4]));
+        if(0 < (int) lengths[5])
+            sandesha2_sender_bean_set_send(bean, env, AXIS2_ATOI(row[5]));
+        if(0 < (int) lengths[6])
+            sandesha2_sender_bean_set_resend(bean, env, AXIS2_ATOI(row[6]));
+        if(0 < (int) lengths[7])
+            sandesha2_sender_bean_set_time_to_send(bean, env, atol(row[7]));
+        if(0 < (int) lengths[8])
+            sandesha2_sender_bean_set_msg_type(bean, env, AXIS2_ATOI(row[8]));
+        if(0 < (int) lengths[9])
+            sandesha2_sender_bean_set_seq_id(bean, env, row[9]);
+        if(0 < (int) lengths[10])
+            sandesha2_sender_bean_set_wsrm_anon_uri(bean, env, row[10]);
+        if(0 < (int) lengths[11])
+            sandesha2_sender_bean_set_to_address(bean, env, row[11]);
 
     }
     else
@@ -597,14 +611,6 @@
     }
     /* Do not use the is_resend flag to match messages, as it can stop us from
      * detecting RM messages during 'get_next_msg_to_send'*/
-    /*is_resend = sandesha2_sender_bean_is_resend(
-        (sandesha2_sender_bean_t *) bean, env);
-    temp_is_resend = sandesha2_sender_bean_is_resend(
-        (sandesha2_sender_bean_t *) candidate, env);
-    if(is_resend != temp_is_resend)
-    {
-        add = AXIS2_FALSE;
-    }*/
     return add;
 }
 

Modified: webservices/sandesha/trunk/c/src/storage/mysql/permanent_storage_mgr.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/storage/mysql/permanent_storage_mgr.c?view=diff&rev=535486&r1=535485&r2=535486
==============================================================================
--- webservices/sandesha/trunk/c/src/storage/mysql/permanent_storage_mgr.c (original)
+++ webservices/sandesha/trunk/c/src/storage/mysql/permanent_storage_mgr.c Sat May  5 02:38:52 2007
@@ -147,7 +147,8 @@
     sandesha2_storage_mgr_t *storage,
     const axutil_env_t *env,
     axis2_char_t *key,
-    axis2_conf_ctx_t *conf_ctx);
+    axis2_conf_ctx_t *conf_ctx,
+    const axis2_bool_t persistent);
 		
 axis2_status_t AXIS2_CALL
 sandesha2_permanent_storage_mgr_store_msg_ctx(
@@ -778,7 +779,8 @@
     sandesha2_storage_mgr_t *storage_mgr, 
     const axutil_env_t *env, 
     axis2_char_t *key,
-    axis2_conf_ctx_t *conf_ctx)
+    axis2_conf_ctx_t *conf_ctx,
+    const axis2_bool_t persistent)
 {
     sandesha2_permanent_storage_mgr_t *storage_mgr_impl = NULL;
     axis2_msg_ctx_t *msg_ctx = NULL;
@@ -807,8 +809,9 @@
     sandesha2_msg_store_bean_t *msg_store_bean = NULL;
 
     storage_mgr_impl = SANDESHA2_INTF_TO_IMPL(storage_mgr);
-    msg_ctx = (axis2_msg_ctx_t *) axutil_hash_get(storage_mgr_impl->msg_ctx_map,
-        key, AXIS2_HASH_KEY_STRING);
+    if(!persistent)
+        msg_ctx = (axis2_msg_ctx_t *) axutil_hash_get(
+            storage_mgr_impl->msg_ctx_map, key, AXIS2_HASH_KEY_STRING);
     if(msg_ctx)
         return msg_ctx;
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "retrieving msg_ctx from database");

Modified: webservices/sandesha/trunk/c/src/storage/sqlite/permanent_storage_mgr.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/storage/sqlite/permanent_storage_mgr.c?view=diff&rev=535486&r1=535485&r2=535486
==============================================================================
--- webservices/sandesha/trunk/c/src/storage/sqlite/permanent_storage_mgr.c (original)
+++ webservices/sandesha/trunk/c/src/storage/sqlite/permanent_storage_mgr.c Sat May  5 02:38:52 2007
@@ -147,7 +147,8 @@
     sandesha2_storage_mgr_t *storage,
     const axutil_env_t *env,
     axis2_char_t *key,
-    axis2_conf_ctx_t *conf_ctx);
+    axis2_conf_ctx_t *conf_ctx,
+    const axis2_bool_t persistent);
 		
 axis2_status_t AXIS2_CALL
 sandesha2_permanent_storage_mgr_store_msg_ctx(

Modified: webservices/sandesha/trunk/c/src/storage/storage_mgr.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/storage/storage_mgr.c?view=diff&rev=535486&r1=535485&r2=535486
==============================================================================
--- webservices/sandesha/trunk/c/src/storage/storage_mgr.c (original)
+++ webservices/sandesha/trunk/c/src/storage/storage_mgr.c Sat May  5 02:38:52 2007
@@ -138,9 +138,11 @@
     sandesha2_storage_mgr_t *storage_mgr,
     const axutil_env_t *env,
     axis2_char_t *key,
-    axis2_conf_ctx_t *conf_ctx)
+    axis2_conf_ctx_t *conf_ctx,
+    const axis2_bool_t persistent)
 {
-     return storage_mgr->ops->retrieve_msg_ctx(storage_mgr, env, key, conf_ctx);
+     return storage_mgr->ops->retrieve_msg_ctx(storage_mgr, env, key, conf_ctx, 
+         persistent);
 }
 		
 axis2_status_t AXIS2_CALL

Modified: webservices/sandesha/trunk/c/src/util/ack_mgr.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/util/ack_mgr.c?view=diff&rev=535486&r1=535485&r2=535486
==============================================================================
--- webservices/sandesha/trunk/c/src/util/ack_mgr.c (original)
+++ webservices/sandesha/trunk/c/src/util/ack_mgr.c Sat May  5 02:38:52 2007
@@ -434,7 +434,7 @@
             msg_ctx_ref_key = sandesha2_sender_bean_get_msg_ctx_ref_key(
                 sender_bean, env);
             msg_ctx1 = sandesha2_storage_mgr_retrieve_msg_ctx(storage_mgr, env,
-                msg_ctx_ref_key, conf_ctx);
+                msg_ctx_ref_key, conf_ctx, AXIS2_FALSE);
             to = (axis2_char_t*)axis2_endpoint_ref_get_address(
                 axis2_msg_ctx_get_to(msg_ctx1, env), env);
             if(0 == axutil_strcmp(to, to_str))

Modified: webservices/sandesha/trunk/c/src/util/msg_retrans_adjuster.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/util/msg_retrans_adjuster.c?view=diff&rev=535486&r1=535485&r2=535486
==============================================================================
--- webservices/sandesha/trunk/c/src/util/msg_retrans_adjuster.c (original)
+++ webservices/sandesha/trunk/c/src/util/msg_retrans_adjuster.c Sat May  5 02:38:52 2007
@@ -79,7 +79,7 @@
         return AXIS2_FALSE;
     }
     msg_ctx = sandesha2_storage_mgr_retrieve_msg_ctx(storage_mgr, env, 
-        stored_key, conf_ctx);
+        stored_key, conf_ctx, AXIS2_FALSE);
     if(msg_ctx)
         rm_msg_ctx = sandesha2_msg_init_init_msg(env, msg_ctx);
     int_seq_id = sandesha2_sender_bean_get_internal_seq_id(retrans_bean, env);

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=535486&r1=535485&r2=535486
==============================================================================
--- webservices/sandesha/trunk/c/src/util/sandesha2_utils.c (original)
+++ webservices/sandesha/trunk/c/src/util/sandesha2_utils.c Sat May  5 02:38:52 2007
@@ -423,7 +423,8 @@
 AXIS2_EXTERN axis2_status_t AXIS2_CALL                        
 sandesha2_utils_start_polling_mgr(
     const axutil_env_t *env,
-    axis2_conf_ctx_t *conf_ctx)
+    axis2_conf_ctx_t *conf_ctx,
+    const axis2_char_t *internal_seq_id)
 {
     sandesha2_polling_mgr_t *polling_mgr = NULL;
     axutil_property_t *property = NULL;
@@ -432,8 +433,9 @@
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, conf_ctx, AXIS2_FAILURE);
     
+    axutil_allocator_switch_to_global_pool(env->allocator);
     property = axis2_ctx_get_property(axis2_conf_ctx_get_base(conf_ctx, env),
-                        env, SANDESHA2_POLLING_MGR);
+        env, SANDESHA2_POLLING_MGR);
     if(property)
         polling_mgr = axutil_property_get_value(property, env);
        
@@ -442,13 +444,17 @@
      */
     if(!polling_mgr)
     {
+        AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
+            "[sandesha2] Starting the polling manager");
         polling_mgr = sandesha2_polling_mgr_create(env);
-        property = axutil_property_create_with_args(env, 3, AXIS2_FALSE,
+        property = axutil_property_create_with_args(env, 0, AXIS2_FALSE,
             (void *)sandesha2_polling_mgr_free_void_arg, polling_mgr);
         axis2_ctx_set_property(axis2_conf_ctx_get_base(conf_ctx, env),
-                        env, SANDESHA2_POLLING_MGR, property);
+            env, SANDESHA2_POLLING_MGR, property);
     }
-    status = sandesha2_polling_mgr_start(polling_mgr, env, conf_ctx);
+    status = sandesha2_polling_mgr_start(polling_mgr, env, conf_ctx, 
+        internal_seq_id);
+    axutil_allocator_switch_to_local_pool(env->allocator);
     return status;
 }
                    
@@ -1223,6 +1229,7 @@
     axis2_transport_out_desc_t *sandesha2_transport_out = NULL;
     axutil_property_t *property = NULL;
     axis2_engine_t *engine = NULL;
+    axis2_status_t status = AXIS2_FAILURE;
 
     msg_ctx = sandesha2_msg_ctx_get_msg_ctx(rm_msg_ctx, env);
     if(msg_ctx)
@@ -1241,8 +1248,7 @@
     axis2_msg_ctx_set_property(msg_ctx, env, 
         SANDESHA2_ORIGINAL_TRANSPORT_OUT_DESC, property);
     
-    property = axutil_property_create_with_args(env, AXIS2_SCOPE_REQUEST, 
-        AXIS2_FALSE, 0, AXIS2_VALUE_TRUE);
+    property = axutil_property_create_with_args(env, 0, 0, 0, AXIS2_VALUE_TRUE);
     axis2_msg_ctx_set_property(msg_ctx, env, SANDESHA2_SET_SEND_TO_TRUE, 
         property);
     sandesha2_transport_out = sandesha2_utils_get_transport_out(env);
@@ -1253,13 +1259,13 @@
     {
         axis2_msg_ctx_set_current_handler_index(msg_ctx, env, 
             axis2_msg_ctx_get_current_handler_index(msg_ctx, env) + 1);
-        axis2_engine_resume_send(engine, env, msg_ctx);
+        status = axis2_engine_resume_send(engine, env, msg_ctx);
     }
     else
     {
-        axis2_engine_send(engine, env, msg_ctx);
+        status = axis2_engine_send(engine, env, msg_ctx);
     }
-    return AXIS2_SUCCESS;
+    return status;
 }
 
 axis2_bool_t AXIS2_CALL

Modified: webservices/sandesha/trunk/c/src/util/seq_mgr.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/util/seq_mgr.c?view=diff&rev=535486&r1=535485&r2=535486
==============================================================================
--- webservices/sandesha/trunk/c/src/util/seq_mgr.c (original)
+++ webservices/sandesha/trunk/c/src/util/seq_mgr.c Sat May  5 02:38:52 2007
@@ -158,9 +158,9 @@
     sandesha2_next_msg_mgr_insert(next_msg_mgr, env, next_msg_bean);
 
     /* Message to invoke. This will apply for only in-order invocations */
-    if(!axis2_msg_ctx_get_server_side(msg_ctx, env) || 
+    /*if(!axis2_msg_ctx_get_server_side(msg_ctx, env) || 
         !sandesha2_utils_is_anon_uri(env, reply_to_addr))
-            sandesha2_utils_start_sender_for_seq(env, conf_ctx, seq_id);
+            sandesha2_utils_start_sender_for_seq(env, conf_ctx, seq_id);*/
     /* Setting the RM Spec version for this sequence */
     create_seq_msg_action = sandesha2_msg_ctx_get_wsa_action(create_seq_msg, 
         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?view=diff&rev=535486&r1=535485&r2=535486
==============================================================================
--- webservices/sandesha/trunk/c/src/workers/in_order_invoker.c (original)
+++ webservices/sandesha/trunk/c/src/workers/in_order_invoker.c Sat May  5 02:38:52 2007
@@ -352,7 +352,7 @@
                     (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);
+                    storage_mgr, env, key, invoker->conf_ctx, AXIS2_FALSE);
                 if(msg_to_invoke)
                     rm_msg_ctx = sandesha2_msg_init_init_msg(env, 
                         msg_to_invoke);
@@ -393,7 +393,7 @@
                         storage_mgr, env);
                 sandesha2_storage_mgr_remove_msg_ctx(storage_mgr, env, key);
                 msg_ctx = sandesha2_storage_mgr_retrieve_msg_ctx(
-                        storage_mgr, env, key, invoker->conf_ctx);
+                    storage_mgr, env, key, invoker->conf_ctx, AXIS2_FALSE);
                 if(msg_ctx)
                     sandesha2_storage_mgr_remove_msg_ctx(storage_mgr,
                         env, key);

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=535486&r1=535485&r2=535486
==============================================================================
--- webservices/sandesha/trunk/c/src/workers/sender.c (original)
+++ webservices/sandesha/trunk/c/src/workers/sender.c Sat May  5 02:38:52 2007
@@ -39,6 +39,7 @@
 #include <axiom_soap_fault.h>
 #include <axiom_soap_body.h>
 #include <platforms/axutil_platform_auto_sense.h>
+#include <axutil_types.h>
 
 /** 
  * @brief Sender struct impl
@@ -247,15 +248,16 @@
     sandesha2_storage_mgr_t *storage_mgr = NULL;
     sandesha2_seq_property_mgr_t *seq_prop_mgr = NULL;
     axis2_bool_t do_sleep = AXIS2_FALSE;
+    axis2_conf_t *conf = NULL;
     
     args = (sandesha2_sender_args_t*)data;
     env = axutil_init_thread_env(args->env);
     sender = args->impl;
     sender = (sandesha2_sender_t*)sender;
-    
     AXIS2_LOG_INFO(env->log, "Start:sandesha2_sender_worker_func");
+    conf = axis2_conf_ctx_get_conf(sender->conf_ctx, env);
     storage_mgr = sandesha2_utils_get_storage_mgr(env, sender->conf_ctx, 
-        axis2_conf_ctx_get_conf(sender->conf_ctx, env));
+        conf);
                         
     while(sender->run_sender)
     {
@@ -267,7 +269,10 @@
         sandesha2_sender_worker_t *sender_worker = NULL;
         axis2_char_t *msg_id = NULL;
         axis2_char_t *seq_id = NULL;
-        int no_of_seqs = 0;
+        axis2_module_desc_t *module_desc = NULL;
+        axutil_qname_t *qname = NULL;
+        axutil_param_t *sleep_time_param = NULL;
+        int no_of_seqs = 0, sleep_time = 0;
         no_of_seqs = axutil_array_list_size(sender->working_seqs, env);
         if(sender->seq_index >= no_of_seqs)
         {
@@ -283,9 +288,18 @@
 
         transaction = sandesha2_storage_mgr_get_transaction(storage_mgr,
             env);
+        qname = axutil_qname_create(env, "sandesha2", NULL, NULL);
+        module_desc = axis2_conf_get_module(conf, env, qname);
+        sleep_time_param = axis2_module_desc_get_param(module_desc, env, 
+            SANDESHA2_SENDER_SLEEP);
+        if(sleep_time_param)
+        {
+            sleep_time = AXIS2_ATOI(axutil_param_get_value(sleep_time_param, env));
+        }
+        axutil_qname_free(qname, env);
         if(!transaction)
         {
-            AXIS2_SLEEP(SANDESHA2_SENDER_SLEEP_TIME); 
+            AXIS2_SLEEP(sleep_time); 
             continue;
         }
         seq_prop_mgr = sandesha2_storage_mgr_get_seq_property_mgr(
@@ -308,7 +322,7 @@
             sender_worker = sandesha2_sender_worker_create(env, sender->conf_ctx, 
                 msg_id);
             sandesha2_sender_worker_run(sender_worker, env);
-            AXIS2_SLEEP(SANDESHA2_SENDER_SLEEP_TIME * 2); 
+            AXIS2_SLEEP(sleep_time * 2); 
             status = sandesha2_sender_worker_get_status(
                 sender_worker, env);
             if(!status)

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=535486&r1=535485&r2=535486
==============================================================================
--- webservices/sandesha/trunk/c/src/workers/sender_worker.c (original)
+++ webservices/sandesha/trunk/c/src/workers/sender_worker.c Sat May  5 02:38:52 2007
@@ -293,7 +293,7 @@
     {
         axutil_allocator_switch_to_global_pool(env->allocator);
         msg_ctx = sandesha2_storage_mgr_retrieve_msg_ctx(storage_mgr, env, key, 
-            sender_worker->conf_ctx);
+            sender_worker->conf_ctx, AXIS2_FALSE);
         axutil_allocator_switch_to_local_pool(env->allocator);
     }
     if(!msg_ctx)
@@ -434,15 +434,12 @@
         /* This is neccessary to avoid a double free */
         axis2_msg_ctx_set_property(msg_ctx, env, AXIS2_TRANSPORT_IN, NULL);
         /* Consider building soap envelope */
-		AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[sandesha2]came100###############################");
         if(AXIS2_TRANSPORT_SENDER_INVOKE(transport_sender, env, msg_ctx))
 		{
-			AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[sandesha2]came101###############################");
         	successfully_sent = AXIS2_TRUE;
         	sender_worker->counter++;
 		}else
 		{
-			AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[sandesha2]came102###############################");
         	successfully_sent = AXIS2_FALSE;
 		}
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org