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

svn commit: r485492 [3/3] - in /webservices/sandesha/trunk/c: ./ config/ include/ src/core/ src/msgprocessors/ src/storage/ src/storage/beans/ src/storage/inmemory/ src/util/ src/workers/

Modified: webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_sender_mgr.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_sender_mgr.c?view=diff&rev=485492&r1=485491&r2=485492
==============================================================================
--- webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_sender_mgr.c (original)
+++ webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_sender_mgr.c Sun Dec 10 20:28:58 2006
@@ -15,11 +15,13 @@
  */
  
 #include <sandesha2_inmemory_sender_mgr.h>
+#include <sandesha2_inmemory_bean_mgr.h>
 #include <sandesha2_sender_mgr.h>
 #include <sandesha2_constants.h>
 #include <sandesha2_error.h>
 #include <sandesha2_utils.h>
 #include <sandesha2_sender_bean.h>
+#include <sandesha2_storage_mgr.h>
 #include <axis2_log.h>
 #include <axis2_hash.h>
 #include <axis2_thread.h>
@@ -32,20 +34,13 @@
 typedef struct sandesha2_inmemory_sender_mgr
 {
     sandesha2_sender_mgr_t sender_mgr;
-    axis2_hash_t *table;
-    axis2_thread_mutex_t *mutex;
+    sandesha2_inmemory_bean_mgr_t *bean_mgr;
 } sandesha2_inmemory_sender_mgr_t;
 
 #define SANDESHA2_INTF_TO_IMPL(sender_mgr) \
     ((sandesha2_inmemory_sender_mgr_t *) sender_mgr)
 
-static axis2_status_t
-sandesha2_inmemory_sender_mgr_update_next_sending_time(
-    sandesha2_sender_mgr_t *sender_mgr,
-    const axis2_env_t *env,
-    sandesha2_sender_bean_t *bean);
-
-axis2_status_t AXIS2_CALL
+void AXIS2_CALL
 sandesha2_inmemory_sender_mgr_free(
     sandesha2_sender_mgr_t *sender_mgr,
     const axis2_env_t *env);
@@ -92,22 +87,17 @@
     const axis2_env_t *env,
     sandesha2_sender_bean_t *bean);
 
-sandesha2_sender_bean_t *AXIS2_CALL
-sandesha2_inmemory_sender_mgr_get_next_msg_to_send(
-    sandesha2_sender_mgr_t *sender_mgr,
-    const axis2_env_t *env);
-
-static axis2_status_t
-sandesha2_inmemory_sender_mgr_update_next_sending_time(
-    sandesha2_sender_mgr_t *sender_mgr,
+axis2_bool_t AXIS2_CALL
+sandesha2_inmemory_sender_mgr_match(
+    sandesha2_inmemory_bean_mgr_t *sender_mgr,
     const axis2_env_t *env,
-    sandesha2_sender_bean_t *bean);
+    sandesha2_rm_bean_t *bean,
+    sandesha2_rm_bean_t *candidate);
 
 sandesha2_sender_bean_t *AXIS2_CALL
-sandesha2_inmemory_sender_mgr_retrieve_from_msg_ref_key(
+sandesha2_inmemory_sender_mgr_get_next_msg_to_send(
     sandesha2_sender_mgr_t *sender_mgr,
-    const axis2_env_t *env,
-    axis2_char_t *msg_ctx_ref_key);
+    const axis2_env_t *env);
 
 static const sandesha2_sender_mgr_ops_t sender_mgr_ops = 
 {
@@ -120,83 +110,45 @@
     sandesha2_inmemory_sender_mgr_find_by_sender_bean,
     sandesha2_inmemory_sender_mgr_find_unique,
     sandesha2_inmemory_sender_mgr_get_next_msg_to_send,
-    sandesha2_inmemory_sender_mgr_retrieve_from_msg_ref_key
 };
 
 AXIS2_EXTERN sandesha2_sender_mgr_t * AXIS2_CALL
 sandesha2_inmemory_sender_mgr_create(
     const axis2_env_t *env,
+    sandesha2_storage_mgr_t *storage_mgr,
     axis2_ctx_t *ctx)
 {
     sandesha2_inmemory_sender_mgr_t *sender_mgr_impl = NULL;
-    axis2_property_t *property = NULL;
     
     AXIS2_ENV_CHECK(env, NULL);
     sender_mgr_impl = AXIS2_MALLOC(env->allocator, 
         sizeof(sandesha2_inmemory_sender_mgr_t));
 
-    sender_mgr_impl->table = NULL;
-    sender_mgr_impl->mutex = NULL;
-
-    sender_mgr_impl->mutex = axis2_thread_mutex_create(env->allocator, 
-            AXIS2_THREAD_MUTEX_DEFAULT);
-    if(!sender_mgr_impl->mutex) 
-    {
-        sandesha2_inmemory_sender_mgr_free(&(sender_mgr_impl->sender_mgr), env);
-        return NULL;
-    }
-
-    property = AXIS2_CTX_GET_PROPERTY(ctx, env, 
-            SANDESHA2_BEAN_MAP_RETRANSMITTER, AXIS2_FALSE);
-    if(NULL != property)
-        sender_mgr_impl->table = (axis2_hash_t *) AXIS2_PROPERTY_GET_VALUE(
-            property, env);
-    if(!sender_mgr_impl->table)
-    {
-        axis2_property_t *property = NULL;
-
-        property = axis2_property_create(env);
-        sender_mgr_impl->table = axis2_hash_make(env);
-        if(!property || !sender_mgr_impl->table)
-        {
-            AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
-            return NULL;
-        }
-        AXIS2_PROPERTY_SET_SCOPE(property, env, AXIS2_SCOPE_APPLICATION);
-        AXIS2_PROPERTY_SET_VALUE(property, env, sender_mgr_impl->table);
-        AXIS2_PROPERTY_SET_FREE_FUNC(property, env, axis2_hash_free_void_arg);
-        AXIS2_CTX_SET_PROPERTY(ctx, env, SANDESHA2_BEAN_MAP_RETRANSMITTER, 
-                property, AXIS2_FALSE);
-    }
-    sender_mgr_impl->sender_mgr.ops = &sender_mgr_ops;
+    sender_mgr_impl->bean_mgr = sandesha2_inmemory_bean_mgr_create(env,
+        storage_mgr, ctx, SANDESHA2_BEAN_MAP_RETRANSMITTER);
+    sender_mgr_impl->bean_mgr->ops.match = sandesha2_inmemory_sender_mgr_match;
+    sender_mgr_impl->sender_mgr.ops = sender_mgr_ops;
     return &(sender_mgr_impl->sender_mgr);
 }
 
-axis2_status_t AXIS2_CALL
+void AXIS2_CALL
 sandesha2_inmemory_sender_mgr_free(
     sandesha2_sender_mgr_t *sender_mgr,
     const axis2_env_t *env)
 {
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     sandesha2_inmemory_sender_mgr_t *sender_mgr_impl = NULL;
     sender_mgr_impl = SANDESHA2_INTF_TO_IMPL(sender_mgr);
 
-    if(sender_mgr_impl->mutex)
-    {
-        axis2_thread_mutex_destroy(sender_mgr_impl->mutex);
-        sender_mgr_impl->mutex = NULL;
-    }
-    if(sender_mgr_impl->table)
+    if(sender_mgr_impl->bean_mgr)
     {
-        axis2_hash_free(sender_mgr_impl->table, env);
-        sender_mgr_impl->table = NULL;
+        sandesha2_inmemory_bean_mgr_free(sender_mgr_impl->bean_mgr, env);
+        sender_mgr_impl->bean_mgr = NULL;
     }
     if(sender_mgr_impl)
     {
         AXIS2_FREE(env->allocator, sender_mgr_impl);
         sender_mgr_impl = NULL;
     }
-    return AXIS2_SUCCESS;
 }
 
 axis2_bool_t AXIS2_CALL
@@ -206,8 +158,11 @@
     sandesha2_sender_bean_t *bean)
 {
     axis2_char_t *msg_id = NULL;
+    axis2_bool_t ret = AXIS2_FALSE;
     sandesha2_inmemory_sender_mgr_t *sender_mgr_impl = NULL;
 
+    AXIS2_LOG_INFO(env->log, 
+        "[sandesha2]Entry:sandesha2_inmemory_sender_mgr_insert");
     AXIS2_ENV_CHECK(env, AXIS2_FALSE);
     AXIS2_PARAM_CHECK(env->error, bean, AXIS2_FALSE);
     sender_mgr_impl = SANDESHA2_INTF_TO_IMPL(sender_mgr);
@@ -218,9 +173,11 @@
         AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_KEY_IS_NULL, AXIS2_FAILURE);
         return AXIS2_FALSE;
     }
-    axis2_hash_set(sender_mgr_impl->table, msg_id, AXIS2_HASH_KEY_STRING, bean);
-
-    return AXIS2_TRUE;
+    ret = sandesha2_inmemory_bean_mgr_insert(sender_mgr_impl->bean_mgr, env,
+        msg_id, (sandesha2_rm_bean_t *) bean);
+    AXIS2_LOG_INFO(env->log, 
+        "[sandesha2]Exit:sandesha2_inmemory_sender_mgr_insert:return:%d", ret);
+    return ret;
 }
 
 axis2_bool_t AXIS2_CALL
@@ -233,10 +190,8 @@
     AXIS2_ENV_CHECK(env, AXIS2_FALSE);
     AXIS2_PARAM_CHECK(env->error, msg_id, AXIS2_FALSE);
     sender_mgr_impl = SANDESHA2_INTF_TO_IMPL(sender_mgr);
-
-    axis2_hash_set(sender_mgr_impl->table, msg_id, AXIS2_HASH_KEY_STRING, NULL);
-
-    return AXIS2_TRUE;
+    return sandesha2_inmemory_bean_mgr_remove(sender_mgr_impl->bean_mgr, env,
+        msg_id);
 }
 
 sandesha2_sender_bean_t *AXIS2_CALL
@@ -245,17 +200,19 @@
     const axis2_env_t *env,
     axis2_char_t *msg_id)
 {
-    sandesha2_sender_bean_t *bean = NULL;
+    sandesha2_sender_bean_t *ret = NULL;
     sandesha2_inmemory_sender_mgr_t *sender_mgr_impl = NULL;
     sender_mgr_impl = SANDESHA2_INTF_TO_IMPL(sender_mgr);
 
+    AXIS2_LOG_INFO(env->log, 
+        "[sandesha2]Entry:sandesha2_inmemory_sender_mgr_retrieve");
     AXIS2_ENV_CHECK(env, AXIS2_FALSE);
     AXIS2_PARAM_CHECK(env->error, msg_id, AXIS2_FALSE);
-
-    bean = (sandesha2_sender_bean_t *) axis2_hash_get(sender_mgr_impl->table, 
-            msg_id, AXIS2_HASH_KEY_STRING);
-
-    return bean;
+    ret = (sandesha2_sender_bean_t *) sandesha2_inmemory_bean_mgr_retrieve(
+        sender_mgr_impl->bean_mgr, env, msg_id);
+    AXIS2_LOG_INFO(env->log, 
+        "[sandesha2]Exit:sandesha2_inmemory_sender_mgr_retrieve");
+    return ret;
 }
 
 axis2_bool_t AXIS2_CALL
@@ -265,8 +222,11 @@
     sandesha2_sender_bean_t *bean)
 {
     axis2_char_t *msg_id = NULL;
+    axis2_bool_t ret = AXIS2_FALSE;
     sandesha2_inmemory_sender_mgr_t *sender_mgr_impl = NULL;
 
+    AXIS2_LOG_INFO(env->log, 
+        "[sandesha2]Entry:sandesha2_inmemory_sender_mgr_update");
     AXIS2_ENV_CHECK(env, AXIS2_FALSE);
     AXIS2_PARAM_CHECK(env->error, bean, AXIS2_FALSE);
     sender_mgr_impl = SANDESHA2_INTF_TO_IMPL(sender_mgr);
@@ -276,8 +236,11 @@
     {
         return AXIS2_FALSE;
     }
-
-    return AXIS2_TRUE; /* No need to update. Being a reference does the job */
+    ret = sandesha2_inmemory_bean_mgr_update(sender_mgr_impl->bean_mgr, env,
+        msg_id, (sandesha2_rm_bean_t *) bean);
+    AXIS2_LOG_INFO(env->log, 
+        "[sandesha2]Exit:sandesha2_inmemory_sender_mgr_update:return:%d", ret);
+    return ret;
 }
 
 axis2_array_list_t *AXIS2_CALL
@@ -286,41 +249,22 @@
     const axis2_env_t *env,
     axis2_char_t *internal_seq_id)
 {
-    axis2_array_list_t *list = NULL;
-    axis2_hash_index_t *i = NULL;
+    sandesha2_sender_bean_t *bean = NULL;
+    axis2_array_list_t *ret = NULL;
     sandesha2_inmemory_sender_mgr_t *sender_mgr_impl = NULL;
-
+    AXIS2_LOG_INFO(env->log, 
+        "[sandesha2]Entry:sandesha2_inmemory_sender_mgr_find_by_internal_seq_id");
     AXIS2_ENV_CHECK(env, NULL);
     sender_mgr_impl = SANDESHA2_INTF_TO_IMPL(sender_mgr);
     
-    list = axis2_array_list_create(env, 0);
-    if(!list)
-    {
-        AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
-        return NULL;
-    }
-    if(!internal_seq_id || 0 == AXIS2_STRCMP(internal_seq_id, ""))
-        return list;
-    for (i = axis2_hash_first (sender_mgr_impl->table, env); i; 
-            i = axis2_hash_next (env, i))
-    {
-        sandesha2_sender_bean_t *sender_bean = NULL;
-        void *v = NULL;
-        axis2_char_t *temp_internal_seq_id = NULL;
-        
-        axis2_hash_this (i, NULL, NULL, &v);
-        sender_bean = (sandesha2_sender_bean_t *) v;
-        temp_internal_seq_id = sandesha2_sender_bean_get_internal_seq_id(
-                sender_bean, env);
-        if(internal_seq_id && temp_internal_seq_id && 0 == AXIS2_STRCMP(
-                    internal_seq_id, temp_internal_seq_id))
-        {
-            AXIS2_ARRAY_LIST_ADD(list, env, sender_bean);
-        }
-        
-    }
-
-    return list;
+    bean = sandesha2_sender_bean_create(env);
+    sandesha2_sender_bean_set_internal_seq_id(bean, env, 
+        internal_seq_id);
+    ret = sandesha2_inmemory_bean_mgr_find(sender_mgr_impl->bean_mgr, env,
+        (sandesha2_rm_bean_t *) bean);
+    AXIS2_LOG_INFO(env->log, 
+        "[sandesha2]Exit:sandesha2_inmemory_sender_mgr_find_by_internal_seq_id");
+    return ret;
 }
 
 axis2_array_list_t *AXIS2_CALL
@@ -329,106 +273,17 @@
     const axis2_env_t *env,
     sandesha2_sender_bean_t *bean)
 {
-    axis2_array_list_t *beans = NULL;
-    axis2_hash_index_t *i = NULL;
     sandesha2_inmemory_sender_mgr_t *sender_mgr_impl = NULL;
-
+    axis2_array_list_t *ret = NULL;
+    AXIS2_LOG_INFO(env->log, 
+        "[sandesha2]Entry:sandesha2_inmemory_sender_mgr_find_by_sender_bean");
     AXIS2_ENV_CHECK(env, AXIS2_FALSE);
     sender_mgr_impl = SANDESHA2_INTF_TO_IMPL(sender_mgr);
-
-    beans = axis2_array_list_create(env, 0);
-    if(!beans)
-    {
-        AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
-        return NULL;
-    }
-    if(!bean)
-    {
-        return beans;
-    }
-    for (i = axis2_hash_first (sender_mgr_impl->table, env); i; 
-            i = axis2_hash_next (env, i))
-    {
-        sandesha2_sender_bean_t *temp = NULL;
-        void *v = NULL;
-        axis2_bool_t add = AXIS2_TRUE;
-        axis2_char_t *ref_key = NULL;
-        axis2_char_t *temp_ref_key = NULL;
-        long time_to_send = 0;
-        long temp_time_to_send = 0;
-        axis2_char_t *msg_id = NULL;
-        axis2_char_t *temp_msg_id = NULL;
-        axis2_char_t *internal_seq_id = NULL;
-        axis2_char_t *temp_internal_seq_id = NULL;
-        long msg_no = 0;
-        long temp_msg_no = 0;
-        int msg_type = 0;
-        int temp_msg_type = 0;
-        axis2_bool_t is_send = AXIS2_FALSE;
-        axis2_bool_t temp_is_send = AXIS2_FALSE;
-        axis2_bool_t is_resend = AXIS2_FALSE;
-        axis2_bool_t temp_is_resend = AXIS2_FALSE;
-        
-        axis2_hash_this (i, NULL, NULL, &v);
-        temp = (sandesha2_sender_bean_t *) v;
-        ref_key = sandesha2_sender_bean_get_msg_ctx_ref_key(bean, env);
-        temp_ref_key = sandesha2_sender_bean_get_msg_ctx_ref_key(temp, env);
-        if(ref_key && temp_ref_key && 0 != AXIS2_STRCMP(ref_key, temp_ref_key))
-        {
-            add = AXIS2_FALSE;
-        }
-        time_to_send = sandesha2_sender_bean_get_time_to_send(bean, env);
-        temp_time_to_send = sandesha2_sender_bean_get_time_to_send(temp, env);
-        if(time_to_send > 0 && (time_to_send != temp_time_to_send))
-        {
-            add = AXIS2_FALSE;
-        }
-        msg_id = sandesha2_sender_bean_get_msg_id(bean, env);
-        temp_msg_id = sandesha2_sender_bean_get_msg_id(temp, env);
-        if(msg_id && temp_msg_id && 0 != AXIS2_STRCMP(msg_id, temp_msg_id))
-        {
-            add = AXIS2_FALSE;
-        }
-        internal_seq_id = sandesha2_sender_bean_get_internal_seq_id(bean, env);
-        temp_internal_seq_id = sandesha2_sender_bean_get_internal_seq_id(temp, 
-                env);
-        if(internal_seq_id && temp_internal_seq_id && 0 != AXIS2_STRCMP(
-                    internal_seq_id, temp_internal_seq_id))
-        {
-            add = AXIS2_FALSE;
-        }
-        msg_no = sandesha2_sender_bean_get_msg_no(bean, env);
-        temp_msg_no = sandesha2_sender_bean_get_msg_no(temp, env);
-        if(msg_no > 0 && (msg_no != temp_msg_no))
-        {
-            add = AXIS2_FALSE;
-        }
-        msg_type = sandesha2_sender_bean_get_msg_type(bean, env);
-        temp_msg_type = sandesha2_sender_bean_get_msg_type(temp, env);
-        if(msg_type != SANDESHA2_MSG_TYPE_UNKNOWN  && (msg_type != temp_msg_type))
-        {
-            add = AXIS2_FALSE;
-        }
-        is_send = sandesha2_sender_bean_is_send(bean, env);
-        temp_is_send = sandesha2_sender_bean_is_send(temp, env);
-        if(is_send != temp_is_send)
-        {
-            add = AXIS2_FALSE;
-        }
-        is_resend = sandesha2_sender_bean_is_resend(bean, env);
-        temp_is_resend = sandesha2_sender_bean_is_resend(temp, env);
-        if(is_resend != temp_is_resend)
-        {
-            add = AXIS2_FALSE;
-        }
-        if(AXIS2_TRUE == add)
-        {
-            AXIS2_ARRAY_LIST_ADD(beans, env, temp);
-        }
-        
-    }
-
-    return beans;
+    ret = sandesha2_inmemory_bean_mgr_find(sender_mgr_impl->bean_mgr, env,
+        (sandesha2_rm_bean_t *) bean);
+    AXIS2_LOG_INFO(env->log, 
+        "[sandesha2]Exit:sandesha2_inmemory_sender_mgr_find_by_sender_bean");
+    return ret;
 }
 
 sandesha2_sender_bean_t *AXIS2_CALL
@@ -437,34 +292,112 @@
     const axis2_env_t *env,
     sandesha2_sender_bean_t *bean)
 {
-    axis2_array_list_t *beans = NULL;
-    int i = 0, size = 0;
-    sandesha2_sender_bean_t *ret = NULL;
     sandesha2_inmemory_sender_mgr_t *sender_mgr_impl = NULL;
-
     AXIS2_ENV_CHECK(env, AXIS2_FALSE);
     AXIS2_PARAM_CHECK(env->error, bean, AXIS2_FALSE);
     sender_mgr_impl = SANDESHA2_INTF_TO_IMPL(sender_mgr);
-    
-    beans = sandesha2_inmemory_sender_mgr_find_by_sender_bean(sender_mgr, env, 
-            bean);
-    if(beans)
-        size = AXIS2_ARRAY_LIST_SIZE(beans, env);
-    if( size > 1)
-    {
-        AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "Non-Unique result");
-        AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_NON_UNIQUE_RESULT, 
-                AXIS2_FAILURE);
-        return NULL;
-    }
-    for(i = 0; i < size; i++)
-    {
-       ret = AXIS2_ARRAY_LIST_GET(beans, env, i);
-       break;
-    }
-    
+    return (sandesha2_sender_bean_t *)
+        sandesha2_inmemory_bean_mgr_find_unique(sender_mgr_impl->bean_mgr, env,
+            (sandesha2_rm_bean_t *) bean);
+}
 
-    return ret;
+axis2_bool_t AXIS2_CALL
+sandesha2_inmemory_sender_mgr_match(
+    sandesha2_inmemory_bean_mgr_t *sender_mgr,
+    const axis2_env_t *env,
+    sandesha2_rm_bean_t *bean,
+    sandesha2_rm_bean_t *candidate)
+{
+    axis2_bool_t add = AXIS2_TRUE;
+    axis2_char_t *ref_key = NULL;
+    axis2_char_t *temp_ref_key = NULL;
+    long time_to_send = 0;
+    long temp_time_to_send = 0;
+    axis2_char_t *msg_id = NULL;
+    axis2_char_t *temp_msg_id = NULL;
+    axis2_char_t *internal_seq_id = NULL;
+    axis2_char_t *temp_internal_seq_id = NULL;
+    long msg_no = 0;
+    long temp_msg_no = 0;
+    int msg_type = 0;
+    int temp_msg_type = 0;
+    axis2_bool_t is_send = AXIS2_FALSE;
+    axis2_bool_t temp_is_send = AXIS2_FALSE;
+    axis2_bool_t is_resend = AXIS2_FALSE;
+    axis2_bool_t temp_is_resend = AXIS2_FALSE;
+    
+    AXIS2_LOG_INFO(env->log, 
+        "[sandesha2]Entry:sandesha2_inmemory_sender_mgr_match");
+    ref_key = sandesha2_sender_bean_get_msg_ctx_ref_key(
+        (sandesha2_sender_bean_t *) bean, env);
+    temp_ref_key = sandesha2_sender_bean_get_msg_ctx_ref_key(
+        (sandesha2_sender_bean_t *) candidate, env);
+    if(ref_key && temp_ref_key && 0 != AXIS2_STRCMP(ref_key, temp_ref_key))
+    {
+        add = AXIS2_FALSE;
+    }
+    time_to_send = sandesha2_sender_bean_get_time_to_send(
+        (sandesha2_sender_bean_t *) bean, env);
+    temp_time_to_send = sandesha2_sender_bean_get_time_to_send(
+        (sandesha2_sender_bean_t *) candidate, env);
+    if(time_to_send > 0 && (time_to_send < temp_time_to_send))
+    {
+        add = AXIS2_FALSE;
+    }
+    msg_id = sandesha2_sender_bean_get_msg_id(
+        (sandesha2_sender_bean_t *) bean, env);
+    temp_msg_id = sandesha2_sender_bean_get_msg_id(
+        (sandesha2_sender_bean_t *) candidate, env);
+    if(msg_id && temp_msg_id && 0 != AXIS2_STRCMP(msg_id, temp_msg_id))
+    {
+        add = AXIS2_FALSE;
+    }
+    internal_seq_id = sandesha2_sender_bean_get_internal_seq_id(
+        (sandesha2_sender_bean_t *) bean, env);
+    temp_internal_seq_id = sandesha2_sender_bean_get_internal_seq_id(
+        (sandesha2_sender_bean_t *) candidate, 
+            env);
+    if(internal_seq_id && temp_internal_seq_id && 0 != AXIS2_STRCMP(
+                internal_seq_id, temp_internal_seq_id))
+    {
+        add = AXIS2_FALSE;
+    }
+    msg_no = sandesha2_sender_bean_get_msg_no(
+        (sandesha2_sender_bean_t *) bean, env);
+    temp_msg_no = sandesha2_sender_bean_get_msg_no(
+        (sandesha2_sender_bean_t *) candidate, env);
+    if(msg_no > 0 && (msg_no != temp_msg_no))
+    {
+        add = AXIS2_FALSE;
+    }
+    msg_type = sandesha2_sender_bean_get_msg_type(
+        (sandesha2_sender_bean_t *) bean, env);
+    temp_msg_type = sandesha2_sender_bean_get_msg_type(
+        (sandesha2_sender_bean_t *) candidate, env);
+    if(msg_type != SANDESHA2_MSG_TYPE_UNKNOWN  && (msg_type != temp_msg_type))
+    {
+        add = AXIS2_FALSE;
+    }
+    is_send = sandesha2_sender_bean_is_send(
+        (sandesha2_sender_bean_t *) bean, env);
+    temp_is_send = sandesha2_sender_bean_is_send(
+        (sandesha2_sender_bean_t *) candidate, env);
+    if(is_send != temp_is_send)
+    {
+        add = AXIS2_FALSE;
+    }
+    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;
+    }
+    AXIS2_LOG_INFO(env->log, 
+        "[sandesha2]Exit:sandesha2_inmemory_sender_mgr_match:add:%d", 
+            add);
+    return add;
 }
 
 sandesha2_sender_bean_t *AXIS2_CALL
@@ -472,173 +405,54 @@
     sandesha2_sender_mgr_t *sender_mgr,
     const axis2_env_t *env)
 {
-    long lowest_app_msg_no = 0;
-    axis2_hash_index_t *i = NULL;
+    sandesha2_sender_bean_t *matcher = sandesha2_sender_bean_create(env);
+    sandesha2_sender_bean_t *result = NULL;
+    long time_now = 0;
+    int i = 0, size = 0;
+    axis2_array_list_t *match_list = NULL;
     sandesha2_inmemory_sender_mgr_t *sender_mgr_impl = NULL;
-
+    AXIS2_LOG_INFO(env->log, 
+        "[sandesha2]Entry:sandesha2_inmemory_sender_mgr_get_next_msg_to_send");
     AXIS2_ENV_CHECK(env, NULL);
     sender_mgr_impl = SANDESHA2_INTF_TO_IMPL(sender_mgr);
-    
-    for (i = axis2_hash_first (sender_mgr_impl->table, env); i; 
-            i = axis2_hash_next (env, i))
-    {
-        sandesha2_sender_bean_t *temp = NULL;
-        void *v = NULL;
-        axis2_bool_t is_send = AXIS2_FALSE;
-        
-        axis2_hash_this (i, NULL, NULL, &v);
-        temp = (sandesha2_sender_bean_t *) v;
-        is_send = sandesha2_sender_bean_is_send(temp, env);
-        if(AXIS2_TRUE == is_send)
-        {
-            long time_to_send = 0;
-            long time_now = 0;
-
-            time_to_send = sandesha2_sender_bean_get_time_to_send(temp, env);
-            time_now = sandesha2_utils_get_current_time_in_millis(env);
-            if(time_now >= time_to_send)
-            {
-                int msg_type = sandesha2_sender_bean_get_msg_type(temp, env);
-                if(msg_type == SANDESHA2_MSG_TYPE_APPLICATION)
-                {
-                    long msg_no = sandesha2_sender_bean_get_msg_no(temp, env);
-                    if(lowest_app_msg_no == 0 || msg_no < lowest_app_msg_no)
-                        lowest_app_msg_no = msg_no;
-                }
-            }
-        }
-    }
-    
-    for (i = axis2_hash_first (sender_mgr_impl->table, env); i; 
-            i = axis2_hash_next (env, i))
-    {
-        sandesha2_sender_bean_t *temp = NULL;
-        void *v = NULL;
-        axis2_char_t *msg_id = NULL;
-        axis2_bool_t is_send = AXIS2_FALSE;
-        
-        axis2_hash_this (i, NULL, NULL, &v);
-        temp = (sandesha2_sender_bean_t *) v;
-        /* test code */
-        msg_id = sandesha2_sender_bean_get_msg_id(temp, env);
-        /* end of test code */
-        is_send = sandesha2_sender_bean_is_send(temp, env);
-        if(AXIS2_TRUE == is_send)
-        {
-            long time_to_send = 0;
-            long time_now = 0;
-            time_to_send = sandesha2_sender_bean_get_time_to_send(temp, env);
-            time_now = sandesha2_utils_get_current_time_in_millis(env);
-            if(time_now >= time_to_send)
-            {
-                axis2_bool_t valid = AXIS2_FALSE;
-                int msg_type = sandesha2_sender_bean_get_msg_type(temp, env);
-                
-                if(msg_type == SANDESHA2_MSG_TYPE_APPLICATION)
-                {
-                    long msg_no = sandesha2_sender_bean_get_msg_no(temp, env);
-                    
-                    if(msg_no == lowest_app_msg_no)
-                        valid = AXIS2_TRUE;
-                }
-                else
-                    valid = AXIS2_TRUE;
-                if(AXIS2_TRUE == valid)
-                {
-                    sandesha2_inmemory_sender_mgr_update_next_sending_time(
-                            sender_mgr, env, temp);
-                    return temp;
-                }
-            }
-        }
-    }
-    return NULL;
-}
-
-static axis2_status_t
-sandesha2_inmemory_sender_mgr_update_next_sending_time(
-    sandesha2_sender_mgr_t *sender_mgr,
-    const axis2_env_t *env,
-    sandesha2_sender_bean_t *bean)
-{
-    return AXIS2_SUCCESS;
-}
-
-/*
-static axis2_array_list_t *
-sandesha2_inmemory_sender_mgr_find_beans_with_msg_no(
-    sandesha2_sender_mgr_t *sender_mgr,
-    const axis2_env_t *env,
-    axis2_array_list_t *list,
-    long msg_no)
-{
-    axis2_array_list_t *beans = NULL;
-    int i = 0, size =0;
-    sandesha2_inmemory_sender_mgr_t *sender_mgr_impl = NULL;
 
-    AXIS2_ENV_CHECK(env, NULL);
-    AXIS2_PARAM_CHECK(env->error, list, NULL);
-    sender_mgr_impl = SANDESHA2_INTF_TO_IMPL(sender_mgr);
-    
-    beans = axis2_array_list_create(env, 0);
-    if(!beans)
-    {
-        AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
-        return NULL;
-    }
-    size = AXIS2_ARRAY_LIST_SIZE(list, env); 
+    sandesha2_sender_bean_set_send(matcher, env, AXIS2_TRUE);
+    time_now = sandesha2_utils_get_current_time_in_millis(env);
+    sandesha2_sender_bean_set_time_to_send(matcher, env, time_now);
+    match_list = sandesha2_inmemory_bean_mgr_find(sender_mgr_impl->bean_mgr, 
+        env, (sandesha2_rm_bean_t *) matcher);
+    /*
+     * We either return an application message or an RM message. If we find
+     * an application message first then we carry on through the list to be
+     * sure that we send the lowest app message avaliable. If we hit a RM
+     * message first then we are done.
+     */
+    if(match_list)
+        size = AXIS2_ARRAY_LIST_SIZE(match_list, env);
     for(i = 0; i < size; i++)
     {
-        long msg_no_l = 0;
         sandesha2_sender_bean_t *bean = NULL;
-        
-        bean = (sandesha2_sender_bean_t *) AXIS2_ARRAY_LIST_GET(list, 
-                env, i);
-        msg_no_l = sandesha2_sender_bean_get_msg_no(bean, env);
-        if(msg_no_l == msg_no)
+        int msg_type = -1;
+        bean = (sandesha2_sender_bean_t *) AXIS2_ARRAY_LIST_GET(match_list, 
+            env, i);
+        msg_type = sandesha2_sender_bean_get_msg_type(bean, env);
+        if(msg_type == SANDESHA2_MSG_TYPE_APPLICATION)
         {
-            AXIS2_ARRAY_LIST_ADD(beans, env, bean);
+            long msg_no = sandesha2_sender_bean_get_msg_no(bean, env);
+            long result_msg_no = -1;
+            if(result)
+                result_msg_no = sandesha2_sender_bean_get_msg_no(result, env);
+            if(result == NULL || result_msg_no > msg_no)
+                result = bean;
         }
-        
-    }
-
-    return beans;
-}
-*/
-
-sandesha2_sender_bean_t *AXIS2_CALL
-sandesha2_inmemory_sender_mgr_retrieve_from_msg_ref_key(
-    sandesha2_sender_mgr_t *sender_mgr,
-    const axis2_env_t *env,
-    axis2_char_t *msg_ctx_ref_key)
-{
-    axis2_hash_index_t *i = NULL;
-    sandesha2_inmemory_sender_mgr_t *sender_mgr_impl = NULL;
-
-    AXIS2_ENV_CHECK(env, NULL);
-    AXIS2_PARAM_CHECK(env->error, msg_ctx_ref_key, NULL);
-    sender_mgr_impl = SANDESHA2_INTF_TO_IMPL(sender_mgr);
-    
-    for (i = axis2_hash_first (sender_mgr_impl->table, env); i; 
-            i = axis2_hash_next (env, i))
-    {
-        sandesha2_sender_bean_t *bean = NULL;
-        axis2_char_t *msg_ctx_ref_key_l = NULL;
-        void *v = NULL;
-        
-        axis2_hash_this (i, NULL, NULL, &v);
-        bean = (sandesha2_sender_bean_t *) v;
-        msg_ctx_ref_key_l = sandesha2_sender_bean_get_msg_ctx_ref_key(bean, env);
-        if(msg_ctx_ref_key_l && 0 == AXIS2_STRCMP(msg_ctx_ref_key_l, 
-                    msg_ctx_ref_key))
+        else if(!result)
         {
-            return bean;
+            result = bean;
+            break;
         }
-    }    
-
-    return NULL;
+    }
+    AXIS2_LOG_INFO(env->log, 
+        "[sandesha2]Exit:sandesha2_inmemory_sender_mgr_get_next_msg_to_send");
+    return result;
 }
-
-
-
 

Modified: webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_seq_property_mgr.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_seq_property_mgr.c?view=diff&rev=485492&r1=485491&r2=485492
==============================================================================
--- webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_seq_property_mgr.c (original)
+++ webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_seq_property_mgr.c Sun Dec 10 20:28:58 2006
@@ -16,9 +16,13 @@
  
 #include <sandesha2_seq_property_mgr.h>
 #include <sandesha2_inmemory_seq_property_mgr.h>
+#include <sandesha2_inmemory_bean_mgr.h>
 #include <sandesha2_constants.h>
 #include <sandesha2_error.h>
 #include <sandesha2_utils.h>
+#include <sandesha2_storage_mgr.h>
+#include <sandesha2_seq_property_mgr.h>
+#include <sandesha2_rm_bean.h>
 #include <axis2_log.h>
 #include <axis2_hash.h>
 #include <axis2_thread.h>
@@ -31,21 +35,14 @@
 typedef struct sandesha2_inmemory_seq_property_mgr
 {
     sandesha2_seq_property_mgr_t seq_prop_mgr;
-    axis2_hash_t *table;
+    sandesha2_inmemory_bean_mgr_t *bean_mgr;
     axis2_array_list_t *values;
-    axis2_thread_mutex_t *mutex;
 } sandesha2_inmemory_seq_property_mgr_t;
 
 #define SANDESHA2_INTF_TO_IMPL(seq_property_mgr) \
     ((sandesha2_inmemory_seq_property_mgr_t *) seq_property_mgr)
 
-static axis2_char_t *
-sandesha2_inmemory_seq_property_mgr_get_id(
-    sandesha2_seq_property_mgr_t *seq_prop_mgr,
-    const axis2_env_t *env,
-    sandesha2_seq_property_bean_t *bean);
-
-axis2_status_t AXIS2_CALL
+void AXIS2_CALL
 sandesha2_inmemory_seq_property_mgr_free(
     sandesha2_seq_property_mgr_t *seq_prop_mgr,
     const axis2_env_t *env);
@@ -88,22 +85,28 @@
     const axis2_env_t *env,
     sandesha2_seq_property_bean_t *bean);
 
+static axis2_bool_t AXIS2_CALL
+sandesha2_inmemory_seq_property_mgr_match(
+    sandesha2_inmemory_bean_mgr_t *seq_prop,
+    const axis2_env_t *env,
+    sandesha2_rm_bean_t *bean,
+    sandesha2_rm_bean_t *candidate);
+
 axis2_array_list_t *AXIS2_CALL
 sandesha2_inmemory_seq_property_mgr_retrieve_all(
     sandesha2_seq_property_mgr_t *seq_prop_mgr,
     const axis2_env_t *env);
 
-axis2_bool_t AXIS2_CALL
-sandesha2_inmemory_seq_property_mgr_update_or_insert(
-    sandesha2_seq_property_mgr_t *seq_prop_mgr,
+static axis2_char_t *
+sandesha2_inmemory_seq_property_mgr_get_id_with_bean(
     const axis2_env_t *env,
     sandesha2_seq_property_bean_t *bean);
 
 static axis2_char_t *
-sandesha2_inmemory_seq_property_mgr_get_id(
-    sandesha2_seq_property_mgr_t *seq_prop_mgr,
+sandesha2_inmemory_seq_property_mgr_get_id_with_seq_id_and_name(
     const axis2_env_t *env,
-    sandesha2_seq_property_bean_t *bean);
+    axis2_char_t *seq_id,
+    axis2_char_t *name);
 
 static const sandesha2_seq_property_mgr_ops_t seq_property_mgr_ops = 
 {
@@ -115,99 +118,50 @@
     sandesha2_inmemory_seq_property_mgr_find,
     sandesha2_inmemory_seq_property_mgr_find_unique,
     sandesha2_inmemory_seq_property_mgr_retrieve_all,
-    sandesha2_inmemory_seq_property_mgr_update_or_insert
 };
 
 AXIS2_EXTERN sandesha2_seq_property_mgr_t * AXIS2_CALL
 sandesha2_inmemory_seq_property_mgr_create(
     const axis2_env_t *env,
+    sandesha2_storage_mgr_t *storage_mgr,
     axis2_ctx_t *ctx)
 {
     sandesha2_inmemory_seq_property_mgr_t *seq_prop_mgr_impl = NULL;
-    axis2_property_t *property = NULL;
-    
     AXIS2_ENV_CHECK(env, NULL);
     seq_prop_mgr_impl = AXIS2_MALLOC(env->allocator, 
-                    sizeof(sandesha2_inmemory_seq_property_mgr_t));
+        sizeof(sandesha2_inmemory_seq_property_mgr_t));
 
-    seq_prop_mgr_impl->table = NULL;
     seq_prop_mgr_impl->values = NULL;
-    seq_prop_mgr_impl->mutex = NULL;
-
-    seq_prop_mgr_impl->mutex = axis2_thread_mutex_create(env->allocator, 
-            AXIS2_THREAD_MUTEX_DEFAULT);
-    if(!seq_prop_mgr_impl->mutex) 
-    {
-        sandesha2_inmemory_seq_property_mgr_free(&(seq_prop_mgr_impl->
-            seq_prop_mgr), env);
-        return NULL;
-    }
-    
-    seq_prop_mgr_impl->values = axis2_array_list_create(env, 0);
-    if(!seq_prop_mgr_impl->values)
-    {
-        AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
-        return NULL;
-    }
-
-    property = AXIS2_CTX_GET_PROPERTY(ctx, env, 
-            SANDESHA2_BEAN_MAP_SEQ_PROPERTY, AXIS2_FALSE);
-    if(NULL != property)
-        seq_prop_mgr_impl->table = (axis2_hash_t *) AXIS2_PROPERTY_GET_VALUE(
-            property, env);
-    if(!seq_prop_mgr_impl->table)
-    {
-        axis2_property_t *property = NULL;
-
-        property = axis2_property_create(env);
-        seq_prop_mgr_impl->table = axis2_hash_make(env);
-        if(!property || !seq_prop_mgr_impl->table)
-        {
-            AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
-            return NULL;
-        }
-        AXIS2_PROPERTY_SET_SCOPE(property, env, AXIS2_SCOPE_APPLICATION);
-        AXIS2_PROPERTY_SET_VALUE(property, env, seq_prop_mgr_impl->table);
-        AXIS2_PROPERTY_SET_FREE_FUNC(property, env, axis2_hash_free_void_arg);
-        AXIS2_CTX_SET_PROPERTY(ctx, env, SANDESHA2_BEAN_MAP_SEQ_PROPERTY, 
-                property, AXIS2_FALSE);
-    }
-    seq_prop_mgr_impl->seq_prop_mgr.ops = &seq_property_mgr_ops;
+    seq_prop_mgr_impl->bean_mgr = sandesha2_inmemory_bean_mgr_create(env,
+        storage_mgr, ctx, SANDESHA2_BEAN_MAP_CREATE_SEQUENCE);
+    seq_prop_mgr_impl->bean_mgr->ops.match = sandesha2_inmemory_seq_property_mgr_match;
+    seq_prop_mgr_impl->seq_prop_mgr.ops = seq_property_mgr_ops;
     return &(seq_prop_mgr_impl->seq_prop_mgr);
 }
 
-axis2_status_t AXIS2_CALL
+void AXIS2_CALL
 sandesha2_inmemory_seq_property_mgr_free(
     sandesha2_seq_property_mgr_t *seq_prop_mgr,
     const axis2_env_t *env)
 {
     sandesha2_inmemory_seq_property_mgr_t *seq_prop_mgr_impl = NULL;
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     seq_prop_mgr_impl = SANDESHA2_INTF_TO_IMPL(seq_prop_mgr);
 
-    if(seq_prop_mgr_impl->mutex)
-    {
-        axis2_thread_mutex_destroy(seq_prop_mgr_impl->mutex);
-        seq_prop_mgr_impl->mutex = NULL;
-    }
     if(seq_prop_mgr_impl->values)
     {
         AXIS2_ARRAY_LIST_FREE(seq_prop_mgr_impl->values, env);
         seq_prop_mgr_impl->values = NULL;
     }
-
-    if(seq_prop_mgr_impl->table)
+    if(seq_prop_mgr_impl->bean_mgr)
     {
-        axis2_hash_free(seq_prop_mgr_impl->table, env);
-        seq_prop_mgr_impl->table = NULL;
+        sandesha2_inmemory_bean_mgr_free(seq_prop_mgr_impl->bean_mgr, env);
+        seq_prop_mgr_impl->bean_mgr = NULL;
     }
-
     if(seq_prop_mgr_impl)
     {
         AXIS2_FREE(env->allocator, seq_prop_mgr_impl);
         seq_prop_mgr_impl = NULL;
     }
-    return AXIS2_SUCCESS;
 }
 
 axis2_bool_t AXIS2_CALL
@@ -216,30 +170,23 @@
     const axis2_env_t *env,
     sandesha2_seq_property_bean_t *bean)
 {
-    axis2_char_t *seq_id = NULL;
     axis2_char_t *id = NULL;
-    axis2_char_t *name = NULL;
+    axis2_bool_t ret = AXIS2_FALSE;
     sandesha2_inmemory_seq_property_mgr_t *seq_prop_mgr_impl = NULL;
 
+    AXIS2_LOG_INFO(env->log, 
+        "Entry:[sandesha2]sandesha2_inmemory_seq_property_mgr_insert");
     AXIS2_ENV_CHECK(env, AXIS2_FALSE);
     AXIS2_PARAM_CHECK(env->error, bean, AXIS2_FALSE);
     seq_prop_mgr_impl = SANDESHA2_INTF_TO_IMPL(seq_prop_mgr);
 
-    seq_id = sandesha2_seq_property_bean_get_seq_id(bean, env);
-    if(!seq_id)
-    {
-        return AXIS2_FALSE;
-    }
-    name = sandesha2_seq_property_bean_get_name(bean, env);
-    if(!name)
-    {
-        return AXIS2_FALSE;
-    }
-    id = axis2_strcat(env, seq_id, ":", name, NULL);
-    axis2_hash_set(seq_prop_mgr_impl->table, id, AXIS2_HASH_KEY_STRING, bean);
-
-    return AXIS2_TRUE;
-
+    id = sandesha2_inmemory_seq_property_mgr_get_id_with_bean(env, bean);
+    ret = sandesha2_inmemory_bean_mgr_insert(seq_prop_mgr_impl->bean_mgr, env,
+        id, (sandesha2_rm_bean_t *) bean);
+    AXIS2_LOG_INFO(env->log, 
+        "Exit:[sandesha2]sandesha2_inmemory_seq_property_mgr_insert:return%d", 
+            ret);
+    return ret;
 }
 
 axis2_bool_t AXIS2_CALL
@@ -251,6 +198,7 @@
 {
     sandesha2_seq_property_bean_t *bean = NULL;
     axis2_char_t *key = NULL;
+    axis2_status_t status = AXIS2_FAILURE;
     sandesha2_inmemory_seq_property_mgr_t *seq_prop_mgr_impl = NULL;
 
     AXIS2_ENV_CHECK(env, AXIS2_FALSE);
@@ -260,12 +208,12 @@
     
     bean = sandesha2_inmemory_seq_property_mgr_retrieve(seq_prop_mgr, env, 
             seq_id, name);
-    key = axis2_strcat(env, seq_id, ":", name, NULL); 
-    axis2_hash_set(seq_prop_mgr_impl->table, key, AXIS2_HASH_KEY_STRING, NULL);
+    key = sandesha2_inmemory_seq_property_mgr_get_id_with_seq_id_and_name(env, 
+        seq_id, name);
+    status = sandesha2_inmemory_bean_mgr_remove(seq_prop_mgr_impl->bean_mgr, env,
+        key);
     AXIS2_FREE(env->allocator, key);
-
-    return AXIS2_TRUE;
-
+    return status;
 }
 
 sandesha2_seq_property_bean_t *AXIS2_CALL
@@ -275,20 +223,29 @@
     axis2_char_t *seq_id,
     axis2_char_t *name)
 {
-    sandesha2_seq_property_bean_t *bean = NULL;
     axis2_char_t *key = NULL;
+    sandesha2_seq_property_bean_t *ret = NULL;
     sandesha2_inmemory_seq_property_mgr_t *seq_prop_mgr_impl = NULL;
 
+    AXIS2_LOG_INFO(env->log, 
+        "[sandesha2]Entry:sandesha2_inmemory_seq_property_mgr_retrieve");
     AXIS2_ENV_CHECK(env, AXIS2_FALSE);
     AXIS2_PARAM_CHECK(env->error, seq_id, AXIS2_FALSE);
     AXIS2_PARAM_CHECK(env->error, name, AXIS2_FALSE);
     seq_prop_mgr_impl = SANDESHA2_INTF_TO_IMPL(seq_prop_mgr);
     
-    key = axis2_strcat(env, seq_id, ":", name, NULL); 
-    bean = (sandesha2_seq_property_bean_t *) axis2_hash_get(seq_prop_mgr_impl->table, 
-            key, AXIS2_HASH_KEY_STRING);
-
-    return bean;
+    key = sandesha2_inmemory_seq_property_mgr_get_id_with_seq_id_and_name(env, 
+        seq_id, name); 
+    AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[sandesha2]key:%s", key);
+    ret = (sandesha2_seq_property_bean_t *) sandesha2_inmemory_bean_mgr_retrieve(
+        seq_prop_mgr_impl->bean_mgr, env, key);
+    AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "came30********************************");
+    if(ret)
+        AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "came31********************************");
+    AXIS2_FREE(env->allocator, key);
+    AXIS2_LOG_INFO(env->log, 
+        "[sandesha2]Exit:sandesha2_inmemory_seq_property_mgr_retrieve");
+    return ret;
 }
 
 axis2_bool_t AXIS2_CALL
@@ -298,27 +255,24 @@
     sandesha2_seq_property_bean_t *bean)
 {
     axis2_char_t *id = NULL;
-    sandesha2_seq_property_bean_t *bean_l = NULL;
+    axis2_bool_t ret = AXIS2_FALSE;
     sandesha2_inmemory_seq_property_mgr_t *seq_prop_mgr_impl = NULL;
 
+    AXIS2_LOG_INFO(env->log, 
+        "Entry:[sandesha2]sandesha2_inmemory_seq_property_mgr_update");
     AXIS2_ENV_CHECK(env, AXIS2_FALSE);
     AXIS2_PARAM_CHECK(env->error, bean, AXIS2_FALSE);
     seq_prop_mgr_impl = SANDESHA2_INTF_TO_IMPL(seq_prop_mgr);
-    id = sandesha2_inmemory_seq_property_mgr_get_id(seq_prop_mgr, env, bean);
+    id = sandesha2_inmemory_seq_property_mgr_get_id_with_bean(env, bean);
     if(!id)
     {
         return AXIS2_FALSE;
     }
-    bean_l = axis2_hash_get(seq_prop_mgr_impl->table, id, 
-            AXIS2_HASH_KEY_STRING);
-    if(!bean_l)
-    {
-        return AXIS2_FALSE;
-    }
-    axis2_hash_set(seq_prop_mgr_impl->table, id, 
-            AXIS2_HASH_KEY_STRING, bean);
-
-    return AXIS2_TRUE;
+    ret = sandesha2_inmemory_bean_mgr_update(seq_prop_mgr_impl->bean_mgr, env,
+        id, (sandesha2_rm_bean_t *) bean);
+    AXIS2_LOG_INFO(env->log, 
+        "Exit:[sandesha2]sandesha2_inmemory_seq_property_mgr_update:return:%d", ret);
+    return ret;
 }
 
 axis2_array_list_t *AXIS2_CALL
@@ -327,65 +281,17 @@
     const axis2_env_t *env,
     sandesha2_seq_property_bean_t *bean)
 {
-    axis2_array_list_t *beans = NULL;
-    axis2_hash_index_t *i = NULL;
     sandesha2_inmemory_seq_property_mgr_t *seq_prop_mgr_impl = NULL;
-
+    axis2_array_list_t *ret = NULL;
+    AXIS2_LOG_INFO(env->log, 
+        "[sandesha2]Entry:sandesha2_inmemory_seq_property_mgr_find");
     AXIS2_ENV_CHECK(env, AXIS2_FALSE);
     seq_prop_mgr_impl = SANDESHA2_INTF_TO_IMPL(seq_prop_mgr);
-
-    beans = axis2_array_list_create(env, 0);
-    if(!beans)
-    {
-        AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
-        return NULL;
-    }
-    if(!bean)
-    {
-        return beans;
-    }
-    for (i = axis2_hash_first (seq_prop_mgr_impl->table, env); i; 
-            i = axis2_hash_next (env, i))
-    {
-        sandesha2_seq_property_bean_t *temp = NULL;
-        void *v = NULL;
-        axis2_bool_t equal = AXIS2_TRUE;
-        axis2_char_t *seq_id = NULL;
-        axis2_char_t *temp_seq_id = NULL;
-        axis2_char_t *name = NULL;
-        axis2_char_t *temp_name = NULL;
-        axis2_char_t *value = NULL;
-        axis2_char_t *temp_value = NULL;
-        
-        axis2_hash_this (i, NULL, NULL, &v);
-        temp = (sandesha2_seq_property_bean_t *) v;
-        seq_id = sandesha2_seq_property_bean_get_seq_id(bean, env);
-        temp_seq_id = sandesha2_seq_property_bean_get_seq_id(temp, env);
-        if(seq_id && temp_seq_id && 0 != AXIS2_STRCMP(seq_id, temp_seq_id))
-        {
-            equal = AXIS2_FALSE;
-        }
-        name = sandesha2_seq_property_bean_get_name(bean, env);
-        temp_name = sandesha2_seq_property_bean_get_name(temp, env);
-        if(name && temp_name && 0 != AXIS2_STRCMP(name, temp_name))
-        {
-            equal = AXIS2_FALSE;
-        }
-        value = sandesha2_seq_property_bean_get_value(bean, env);
-        temp_value = sandesha2_seq_property_bean_get_value(temp, 
-                env);
-        if(value && temp_value && 0 != AXIS2_STRCMP(value, temp_value))
-        {
-            equal = AXIS2_FALSE;
-        }
-        if(AXIS2_TRUE == equal)
-        {
-            AXIS2_ARRAY_LIST_ADD(beans, env, temp);
-        }
-        
-    }
-
-    return beans;
+    ret = sandesha2_inmemory_bean_mgr_find(seq_prop_mgr_impl->bean_mgr, env,
+        (sandesha2_rm_bean_t *) bean);
+    AXIS2_LOG_INFO(env->log, 
+        "[sandesha2]Exit:sandesha2_inmemory_seq_property_mgr_find");
+    return ret;
 }
 
 sandesha2_seq_property_bean_t *AXIS2_CALL
@@ -394,33 +300,60 @@
     const axis2_env_t *env,
     sandesha2_seq_property_bean_t *bean)
 {
-    axis2_array_list_t *beans = NULL;
-    int i = 0, size = 0;
-    sandesha2_seq_property_bean_t *ret = NULL;
     sandesha2_inmemory_seq_property_mgr_t *seq_prop_mgr_impl = NULL;
-
     AXIS2_ENV_CHECK(env, AXIS2_FALSE);
     AXIS2_PARAM_CHECK(env->error, bean, AXIS2_FALSE);
     seq_prop_mgr_impl = SANDESHA2_INTF_TO_IMPL(seq_prop_mgr);
-    
-    beans = sandesha2_inmemory_seq_property_mgr_find(seq_prop_mgr, env, 
-            bean);
-    if(beans)
-        size = AXIS2_ARRAY_LIST_SIZE(beans, env);
-    if( size > 1)
-    {
-        AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "Non-Unique result");
-        AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_NON_UNIQUE_RESULT, 
-                AXIS2_FAILURE);
-        return NULL;
-    }
-    for(i = 0; i < size; i++)
-    {
-       ret = AXIS2_ARRAY_LIST_GET(beans, env, i);
-       break;
-    }
+    return (sandesha2_seq_property_bean_t *)
+        sandesha2_inmemory_bean_mgr_find_unique(seq_prop_mgr_impl->bean_mgr, env,
+        (sandesha2_rm_bean_t *) bean);
+}
 
-    return ret;
+static axis2_bool_t AXIS2_CALL
+sandesha2_inmemory_seq_property_mgr_match(
+    sandesha2_inmemory_bean_mgr_t *seq_prop_mgr,
+    const axis2_env_t *env,
+    sandesha2_rm_bean_t *bean,
+    sandesha2_rm_bean_t *candidate)
+{
+    axis2_bool_t equal = AXIS2_TRUE;
+    axis2_char_t *seq_id = NULL;
+    axis2_char_t *temp_seq_id = NULL;
+    axis2_char_t *name = NULL;
+    axis2_char_t *temp_name = NULL;
+    axis2_char_t *value = NULL;
+    axis2_char_t *temp_value = NULL;
+    
+    AXIS2_LOG_INFO(env->log, 
+        "[sandesha2]Entry:sandesha2_inmemory_seq_property_mgr_match");
+    seq_id = sandesha2_seq_property_bean_get_seq_id(
+        (sandesha2_seq_property_bean_t *) bean, env);
+    temp_seq_id = sandesha2_seq_property_bean_get_seq_id(
+        (sandesha2_seq_property_bean_t *) candidate, env);
+    if(seq_id && temp_seq_id && 0 != AXIS2_STRCMP(seq_id, temp_seq_id))
+    {
+        equal = AXIS2_FALSE;
+    }
+    name = sandesha2_seq_property_bean_get_name(
+        (sandesha2_seq_property_bean_t *) bean, env);
+    temp_name = sandesha2_seq_property_bean_get_name(
+        (sandesha2_seq_property_bean_t *) candidate, env);
+    if(name && temp_name && 0 != AXIS2_STRCMP(name, temp_name))
+    {
+        equal = AXIS2_FALSE;
+    }
+    value = sandesha2_seq_property_bean_get_value(
+        (sandesha2_seq_property_bean_t *) bean, env);
+    temp_value = sandesha2_seq_property_bean_get_value(
+        (sandesha2_seq_property_bean_t *) candidate, env);
+    if(value && temp_value && 0 != AXIS2_STRCMP(value, temp_value))
+    {
+        equal = AXIS2_FALSE;
+    }
+    AXIS2_LOG_INFO(env->log, 
+        "[sandesha2]Exit:sandesha2_inmemory_seq_property_mgr_match:equal:%d", 
+            equal);
+    return equal;
 }
 
 axis2_array_list_t *AXIS2_CALL
@@ -428,70 +361,33 @@
     sandesha2_seq_property_mgr_t *seq_prop_mgr,
     const axis2_env_t *env)
 {
-    axis2_hash_index_t *i = NULL;
     sandesha2_inmemory_seq_property_mgr_t *seq_prop_mgr_impl = NULL;
-
     AXIS2_ENV_CHECK(env, AXIS2_FALSE);
     seq_prop_mgr_impl = SANDESHA2_INTF_TO_IMPL(seq_prop_mgr);
-
-    for (i = axis2_hash_first (seq_prop_mgr_impl->table, env); i; 
-            i = axis2_hash_next (env, i))
-    {
-        sandesha2_seq_property_bean_t *bean = NULL;
-        void *v = NULL;
-        
-        axis2_hash_this (i, NULL, NULL, &v);
-        bean = (sandesha2_seq_property_bean_t *) v;
-        AXIS2_ARRAY_LIST_ADD(seq_prop_mgr_impl->values, env, bean);
-    }
-
-    return seq_prop_mgr_impl->values;
+    return sandesha2_inmemory_bean_mgr_find(seq_prop_mgr_impl->bean_mgr, env,
+        NULL);
 }
 
-axis2_bool_t AXIS2_CALL
-sandesha2_inmemory_seq_property_mgr_update_or_insert(
-    sandesha2_seq_property_mgr_t *seq_prop_mgr,
+static axis2_char_t *
+sandesha2_inmemory_seq_property_mgr_get_id_with_seq_id_and_name(
     const axis2_env_t *env,
-    sandesha2_seq_property_bean_t *bean)
+    axis2_char_t *seq_id,
+    axis2_char_t *name)
 {
     axis2_char_t *id = NULL;
-    sandesha2_seq_property_bean_t *bean_l = NULL;
-    sandesha2_inmemory_seq_property_mgr_t *seq_prop_mgr_impl = NULL;
-
-    AXIS2_ENV_CHECK(env, AXIS2_FALSE);
-    seq_prop_mgr_impl = SANDESHA2_INTF_TO_IMPL(seq_prop_mgr);
 
-    id = sandesha2_inmemory_seq_property_mgr_get_id(seq_prop_mgr, env, bean);
-    if(!id)
-    {
-        return AXIS2_FALSE;
-    }
-    bean_l = axis2_hash_get(seq_prop_mgr_impl->table, id, 
-            AXIS2_HASH_KEY_STRING);
-    if(!bean_l)
-    {
-        axis2_hash_set(seq_prop_mgr_impl->table, id, 
-            AXIS2_HASH_KEY_STRING, bean);
-    }
-    axis2_hash_set(seq_prop_mgr_impl->table, id, 
-            AXIS2_HASH_KEY_STRING, bean);
-
-    return AXIS2_TRUE;
+    id = axis2_strcat(env, seq_id, ":", name, NULL);
+    return id;
 }
 
 static axis2_char_t *
-sandesha2_inmemory_seq_property_mgr_get_id(
-    sandesha2_seq_property_mgr_t *seq_prop_mgr,
+sandesha2_inmemory_seq_property_mgr_get_id_with_bean(
     const axis2_env_t *env,
     sandesha2_seq_property_bean_t *bean)
 {
     axis2_char_t *seq_id = NULL;
     axis2_char_t *name = NULL;
     axis2_char_t *id = NULL;
-    sandesha2_inmemory_seq_property_mgr_t *seq_prop_mgr_impl = NULL;
-
-    AXIS2_ENV_CHECK(env, AXIS2_FALSE);
-    seq_prop_mgr_impl = SANDESHA2_INTF_TO_IMPL(seq_prop_mgr);
 
     seq_id = sandesha2_seq_property_bean_get_seq_id(bean, env);
     name = sandesha2_seq_property_bean_get_name(bean, env);

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=485492&r1=485491&r2=485492
==============================================================================
--- webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_storage_mgr.c (original)
+++ webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_storage_mgr.c Sun Dec 10 20:28:58 2006
@@ -16,11 +16,17 @@
  
 #include <sandesha2_storage_mgr.h>
 #include <sandesha2_create_seq_mgr.h>
+#include <sandesha2_inmemory_create_seq_mgr.h>
 #include <sandesha2_invoker_mgr.h>
+#include <sandesha2_inmemory_invoker_mgr.h>
 #include <sandesha2_next_msg_mgr.h>
+#include <sandesha2_inmemory_next_msg_mgr.h>
 #include <sandesha2_sender_mgr.h>
+#include <sandesha2_inmemory_sender_mgr.h>
 #include <sandesha2_seq_property_mgr.h>
+#include <sandesha2_inmemory_seq_property_mgr.h>
 #include <sandesha2_transaction.h>
+#include <sandesha2_inmemory_transaction.h>
 #include <sandesha2_constants.h>
 #include <sandesha2_error.h>
 #include <sandesha2_utils.h>
@@ -200,13 +206,17 @@
         env);
     storage_mgr_impl->conf_ctx = conf_ctx;
     ctx = AXIS2_CONF_CTX_GET_BASE(conf_ctx, env);
-    storage_mgr_impl->create_seq_mgr = sandesha2_create_seq_mgr_create(env, 
-        ctx);
-    storage_mgr_impl->next_msg_mgr = sandesha2_next_msg_mgr_create(env, ctx);
-    storage_mgr_impl->seq_property_mgr = sandesha2_seq_property_mgr_create(env, 
-        ctx);
-    storage_mgr_impl->sender_mgr = sandesha2_sender_mgr_create(env, ctx);
-    storage_mgr_impl->invoker_mgr = sandesha2_invoker_mgr_create(env, ctx);
+    storage_mgr_impl->create_seq_mgr = sandesha2_inmemory_create_seq_mgr_create(
+        env, &(storage_mgr_impl->storage_mgr), ctx);
+    storage_mgr_impl->next_msg_mgr = sandesha2_inmemory_next_msg_mgr_create(
+        env, &(storage_mgr_impl->storage_mgr), ctx);
+    storage_mgr_impl->seq_property_mgr = 
+        sandesha2_inmemory_seq_property_mgr_create(env, 
+            &(storage_mgr_impl->storage_mgr), ctx);
+    storage_mgr_impl->sender_mgr = sandesha2_inmemory_sender_mgr_create(env, 
+        &(storage_mgr_impl->storage_mgr), ctx);
+    storage_mgr_impl->invoker_mgr = sandesha2_inmemory_invoker_mgr_create(env, 
+        &(storage_mgr_impl->storage_mgr), ctx);
 
     storage_mgr_impl->storage_mgr.ops = &storage_mgr_ops;
 
@@ -232,7 +242,7 @@
 
     if(storage_mgr_impl->create_seq_mgr)
     {
-        SANDESHA2_CREATE_SEQ_MGR_FREE(storage_mgr_impl->create_seq_mgr, env);
+        sandesha2_create_seq_mgr_free(storage_mgr_impl->create_seq_mgr, env);
         storage_mgr_impl->create_seq_mgr = NULL;
     }
     if(storage_mgr_impl->next_msg_mgr)
@@ -275,7 +285,7 @@
     sandesha2_storage_mgr_t *storage_mgr,
     const axis2_env_t *env)
 {
-    return sandesha2_transaction_create(env, storage_mgr);
+    return sandesha2_inmemory_transaction_create(env, storage_mgr);
 }
 
 void AXIS2_CALL

Modified: webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_transaction.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_transaction.c?view=diff&rev=485492&r1=485491&r2=485492
==============================================================================
--- webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_transaction.c (original)
+++ webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_transaction.c Sun Dec 10 20:28:58 2006
@@ -97,7 +97,7 @@
         (env->allocator, sizeof(sandesha2_inmemory_transaction_impl_t));
 
     trans_impl->storage_mgr = storage_mgr;
-    trans_impl->enlisted_beans = NULL;
+    trans_impl->enlisted_beans = axis2_array_list_create(env, 0);
     trans_impl->mutex = axis2_thread_mutex_create(env->allocator,
         AXIS2_THREAD_MUTEX_DEFAULT);
     trans_impl->trans.ops = &transaction_ops;
@@ -173,16 +173,16 @@
     sandesha2_inmemory_transaction_impl_t *trans_impl = NULL;
     int i = 0, size = 0;
     trans_impl = SANDESHA2_INTF_TO_IMPL(trans);
-    sandesha2_storage_mgr_remove_inmemory_transaction(trans_impl->storage_mgr, 
-        env, trans);
     if(trans_impl->enlisted_beans)
         size = AXIS2_ARRAY_LIST_SIZE(trans_impl->enlisted_beans, env);
     for(i = 0; i < size; i++)
     {
+        sandesha2_rm_bean_t *rm_bean_l = NULL;
         sandesha2_rm_bean_t *rm_bean = (sandesha2_rm_bean_t *) 
             AXIS2_ARRAY_LIST_GET(trans_impl->enlisted_beans, env, i);
+        rm_bean_l = sandesha2_rm_bean_get_base(rm_bean, env);
         axis2_thread_mutex_lock(trans_impl->mutex);
-        sandesha2_rm_bean_set_transaction(rm_bean, env, NULL);
+        sandesha2_rm_bean_set_transaction(rm_bean_l, env, NULL);
         axis2_thread_mutex_unlock(trans_impl->mutex);
     }
     AXIS2_ARRAY_LIST_FREE(trans_impl->enlisted_beans, env);
@@ -195,33 +195,40 @@
     const axis2_env_t *env,
     sandesha2_rm_bean_t *rm_bean)
 {
+    sandesha2_rm_bean_t *rm_bean_l = NULL;
     sandesha2_inmemory_transaction_impl_t *trans_impl = NULL;
+    AXIS2_LOG_INFO(env->log, 
+        "[sandesha2]Start:sandesha2_inmemory_transaction_enlist");
     trans_impl = SANDESHA2_INTF_TO_IMPL(trans);
+    rm_bean_l = sandesha2_rm_bean_get_base(rm_bean, env);
     if(rm_bean)
     {
         sandesha2_transaction_t *other = NULL;
         axis2_thread_mutex_lock(trans_impl->mutex);
-        other = sandesha2_rm_bean_get_transaction(rm_bean, env);
-        while(other && other != trans)
+        other = sandesha2_rm_bean_get_transaction(rm_bean_l, env);
+        /*while(other && other != trans)
         {
             int size = 0;
             if(trans_impl->enlisted_beans)
                 size = AXIS2_ARRAY_LIST_SIZE(trans_impl->enlisted_beans, env);
+            AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "size:%d", size);
             if(size > 0)
             {
                 AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "Possible deadlock");
                 AXIS2_ERROR_SET(env->error, AXIS2_ERROR_POSSIBLE_DEADLOCK, 
                     AXIS2_FAILURE);
-                AXIS2_SLEEP(6);
             }
-            other = sandesha2_rm_bean_get_transaction(rm_bean, env);
-        }
+            AXIS2_SLEEP(6);
+            other = sandesha2_rm_bean_get_transaction(rm_bean_l, env);
+        }*/
         if(!other)
         {
-            sandesha2_rm_bean_set_transaction(rm_bean, env, trans);
+            sandesha2_rm_bean_set_transaction(rm_bean_l, env, trans);
             AXIS2_ARRAY_LIST_ADD(trans_impl->enlisted_beans, env, rm_bean);
         }   
         axis2_thread_mutex_unlock(trans_impl->mutex);
     }    
+    AXIS2_LOG_INFO(env->log, 
+        "[sandesha2]Exit:sandesha2_inmemory_transaction_enlist");
 }
 

Modified: webservices/sandesha/trunk/c/src/storage/inmemory/sandesha2_inmemory_bean_mgr.h
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/storage/inmemory/sandesha2_inmemory_bean_mgr.h?view=diff&rev=485492&r1=485491&r2=485492
==============================================================================
--- webservices/sandesha/trunk/c/src/storage/inmemory/sandesha2_inmemory_bean_mgr.h (original)
+++ webservices/sandesha/trunk/c/src/storage/inmemory/sandesha2_inmemory_bean_mgr.h Sun Dec 10 20:28:58 2006
@@ -42,7 +42,7 @@
 
 AXIS2_DECLARE_DATA struct sandesha2_inmemory_bean_mgr_ops
 {
-    axis2_status_t (AXIS2_CALL *
+    void (AXIS2_CALL *
             free) (
                 sandesha2_inmemory_bean_mgr_t *bean_mgr,
                 const axis2_env_t *env);
@@ -106,7 +106,7 @@
     struct axis2_ctx *ctx,
     axis2_char_t *key);
 
-axis2_status_t AXIS2_CALL
+void AXIS2_CALL
 sandesha2_inmemory_bean_mgr_free(
     sandesha2_inmemory_bean_mgr_t *bean_mgr,
     const axis2_env_t *envv);

Modified: webservices/sandesha/trunk/c/src/storage/invoker_mgr.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/storage/invoker_mgr.c?view=diff&rev=485492&r1=485491&r2=485492
==============================================================================
--- webservices/sandesha/trunk/c/src/storage/invoker_mgr.c (original)
+++ webservices/sandesha/trunk/c/src/storage/invoker_mgr.c Sun Dec 10 20:28:58 2006
@@ -22,7 +22,7 @@
 #include <axis2_thread.h>
 #include <axis2_property.h>
 
-axis2_status_t AXIS2_CALL
+void AXIS2_CALL
 sandesha2_invoker_mgr_free(
     sandesha2_invoker_mgr_t *invoker,
     const axis2_env_t *env)

Modified: webservices/sandesha/trunk/c/src/storage/next_msg_mgr.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/storage/next_msg_mgr.c?view=diff&rev=485492&r1=485491&r2=485492
==============================================================================
--- webservices/sandesha/trunk/c/src/storage/next_msg_mgr.c (original)
+++ webservices/sandesha/trunk/c/src/storage/next_msg_mgr.c Sun Dec 10 20:28:58 2006
@@ -23,12 +23,12 @@
 #include <axis2_thread.h>
 #include <axis2_property.h>
 
-axis2_status_t AXIS2_CALL
+void AXIS2_CALL
 sandesha2_next_msg_mgr_free(
     sandesha2_next_msg_mgr_t *next_msg,
     const axis2_env_t *env)
 {
-    return next_msg->ops->free(next_msg, env);
+    return next_msg->ops.free(next_msg, env);
 }
 
 axis2_bool_t AXIS2_CALL
@@ -37,7 +37,7 @@
     const axis2_env_t *env,
     sandesha2_next_msg_bean_t *bean)
 {
-    return next_msg->ops->insert(next_msg, env, bean);
+    return next_msg->ops.insert(next_msg, env, bean);
 }
 
 axis2_bool_t AXIS2_CALL
@@ -46,7 +46,7 @@
     const axis2_env_t *env,
     axis2_char_t *seq_id)
 {
-    return next_msg->ops->remove(next_msg, env, seq_id);
+    return next_msg->ops.remove(next_msg, env, seq_id);
 }
 
 sandesha2_next_msg_bean_t *AXIS2_CALL
@@ -55,7 +55,7 @@
     const axis2_env_t *env,
     axis2_char_t *seq_id)
 {
-    return next_msg->ops->retrieve(next_msg, env, seq_id);
+    return next_msg->ops.retrieve(next_msg, env, seq_id);
 }
 
 axis2_bool_t AXIS2_CALL
@@ -64,7 +64,7 @@
     const axis2_env_t *env,
     sandesha2_next_msg_bean_t *bean)
 {
-    return next_msg->ops->update(next_msg, env, bean);
+    return next_msg->ops.update(next_msg, env, bean);
 }
 
 axis2_array_list_t *AXIS2_CALL
@@ -73,7 +73,7 @@
     const axis2_env_t *env,
     sandesha2_next_msg_bean_t *bean)
 {
-    return next_msg->ops->find(next_msg, env, bean);
+    return next_msg->ops.find(next_msg, env, bean);
 }
 
 sandesha2_next_msg_bean_t *AXIS2_CALL
@@ -82,7 +82,7 @@
     const axis2_env_t *env,
     sandesha2_next_msg_bean_t *bean)
 {
-    return next_msg->ops->find_unique(next_msg, env, bean);
+    return next_msg->ops.find_unique(next_msg, env, bean);
 }
 
 axis2_array_list_t *AXIS2_CALL
@@ -90,6 +90,6 @@
     sandesha2_next_msg_mgr_t *next_msg,
     const axis2_env_t *env)
 {
-    return next_msg->ops->retrieve_all(next_msg, env);
+    return next_msg->ops.retrieve_all(next_msg, env);
 }
 

Modified: webservices/sandesha/trunk/c/src/storage/sender_mgr.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/storage/sender_mgr.c?view=diff&rev=485492&r1=485491&r2=485492
==============================================================================
--- webservices/sandesha/trunk/c/src/storage/sender_mgr.c (original)
+++ webservices/sandesha/trunk/c/src/storage/sender_mgr.c Sun Dec 10 20:28:58 2006
@@ -24,12 +24,12 @@
 #include <axis2_thread.h>
 #include <axis2_property.h>
 
-axis2_status_t AXIS2_CALL
+void AXIS2_CALL
 sandesha2_sender_mgr_free(
     sandesha2_sender_mgr_t *sender,
     const axis2_env_t *env)
 {
-    return sender->ops->free(sender, env);
+    return sender->ops.free(sender, env);
 }
 
 axis2_bool_t AXIS2_CALL
@@ -38,7 +38,7 @@
     const axis2_env_t *env,
     sandesha2_sender_bean_t *bean)
 {
-    return sender->ops->insert(sender, env, bean);
+    return sender->ops.insert(sender, env, bean);
 }
 
 axis2_bool_t AXIS2_CALL
@@ -47,7 +47,7 @@
     const axis2_env_t *env,
     axis2_char_t *msg_id)
 {
-    return sender->ops->remove(sender, env, msg_id);
+    return sender->ops.remove(sender, env, msg_id);
 }
 
 sandesha2_sender_bean_t *AXIS2_CALL
@@ -56,7 +56,7 @@
     const axis2_env_t *env,
     axis2_char_t *msg_id)
 {
-    return sender->ops->retrieve(sender, env, msg_id);
+    return sender->ops.retrieve(sender, env, msg_id);
 }
 
 axis2_bool_t AXIS2_CALL
@@ -65,7 +65,7 @@
     const axis2_env_t *env,
     sandesha2_sender_bean_t *bean)
 {
-    return sender->ops->update(sender, env, bean);
+    return sender->ops.update(sender, env, bean);
 }
 
 axis2_array_list_t *AXIS2_CALL
@@ -74,7 +74,7 @@
     const axis2_env_t *env,
     axis2_char_t *internal_seq_id)
 {
-    return sender->ops->find_by_internal_seq_id(sender, env, internal_seq_id);
+    return sender->ops.find_by_internal_seq_id(sender, env, internal_seq_id);
 }
 
 axis2_array_list_t *AXIS2_CALL
@@ -83,7 +83,7 @@
     const axis2_env_t *env,
     sandesha2_sender_bean_t *bean)
 {
-    return sender->ops->find_by_sender_bean(sender, env, bean);
+    return sender->ops.find_by_sender_bean(sender, env, bean);
 }
 
 sandesha2_sender_bean_t *AXIS2_CALL
@@ -92,7 +92,7 @@
     const axis2_env_t *env,
     sandesha2_sender_bean_t *bean)
 {
-    return sender->ops->find_unique(sender, env, bean);
+    return sender->ops.find_unique(sender, env, bean);
 }
 
 sandesha2_sender_bean_t *AXIS2_CALL
@@ -100,18 +100,6 @@
     sandesha2_sender_mgr_t *sender,
     const axis2_env_t *env)
 {
-    return sender->ops->get_next_msg_to_send(sender, env);
+    return sender->ops.get_next_msg_to_send(sender, env);
 }
-
-sandesha2_sender_bean_t *AXIS2_CALL
-sandesha2_sender_mgr_retrieve_from_msg_ref_key(
-    sandesha2_sender_mgr_t *sender,
-    const axis2_env_t *env,
-    axis2_char_t *msg_ctx_ref_key)
-{
-    return sender->ops->retrieve_from_msg_ref_key(sender, env, msg_ctx_ref_key);
-}
-
-
-
 

Modified: webservices/sandesha/trunk/c/src/storage/seq_property_mgr.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/storage/seq_property_mgr.c?view=diff&rev=485492&r1=485491&r2=485492
==============================================================================
--- webservices/sandesha/trunk/c/src/storage/seq_property_mgr.c (original)
+++ webservices/sandesha/trunk/c/src/storage/seq_property_mgr.c Sun Dec 10 20:28:58 2006
@@ -23,12 +23,12 @@
 #include <axis2_thread.h>
 #include <axis2_property.h>
 
-axis2_status_t AXIS2_CALL
+void AXIS2_CALL
 sandesha2_seq_property_mgr_free(
     sandesha2_seq_property_mgr_t *seq_prop_mgr,
     const axis2_env_t *env)
 {
-    return seq_prop_mgr->ops->free(seq_prop_mgr, env);
+    return seq_prop_mgr->ops.free(seq_prop_mgr, env);
 }
 
 axis2_bool_t AXIS2_CALL
@@ -37,7 +37,7 @@
     const axis2_env_t *env,
     sandesha2_seq_property_bean_t *bean)
 {
-    return seq_prop_mgr->ops->insert(seq_prop_mgr, env, bean);
+    return seq_prop_mgr->ops.insert(seq_prop_mgr, env, bean);
 }
 
 axis2_bool_t AXIS2_CALL
@@ -47,7 +47,7 @@
         axis2_char_t *seq_id,
         axis2_char_t *name)
 {
-    return seq_prop_mgr->ops->remove(seq_prop_mgr, env, seq_id, name);
+    return seq_prop_mgr->ops.remove(seq_prop_mgr, env, seq_id, name);
 }
 
 sandesha2_seq_property_bean_t *AXIS2_CALL
@@ -57,7 +57,7 @@
     axis2_char_t *seq_id,
     axis2_char_t *name)
 {
-    return seq_prop_mgr->ops->retrieve(seq_prop_mgr, env, seq_id, name);
+    return seq_prop_mgr->ops.retrieve(seq_prop_mgr, env, seq_id, name);
 }
 
 axis2_bool_t AXIS2_CALL
@@ -66,7 +66,7 @@
     const axis2_env_t *env,
     sandesha2_seq_property_bean_t *bean)
 {
-    return seq_prop_mgr->ops->update(seq_prop_mgr, env, bean);
+    return seq_prop_mgr->ops.update(seq_prop_mgr, env, bean);
 }
 
 axis2_array_list_t *AXIS2_CALL
@@ -75,7 +75,7 @@
     const axis2_env_t *env,
     sandesha2_seq_property_bean_t *bean)
 {
-    return seq_prop_mgr->ops->find(seq_prop_mgr, env, bean);
+    return seq_prop_mgr->ops.find(seq_prop_mgr, env, bean);
 }
 
 sandesha2_seq_property_bean_t *AXIS2_CALL
@@ -84,7 +84,7 @@
     const axis2_env_t *env,
     sandesha2_seq_property_bean_t *bean)
 {
-    return seq_prop_mgr->ops->find_unique(seq_prop_mgr, env, bean);
+    return seq_prop_mgr->ops.find_unique(seq_prop_mgr, env, bean);
 }
 
 axis2_array_list_t *AXIS2_CALL
@@ -92,15 +92,6 @@
     sandesha2_seq_property_mgr_t *seq_prop_mgr,
     const axis2_env_t *env)
 {
-    return seq_prop_mgr->ops->retrieve_all(seq_prop_mgr, env);
-}
-
-axis2_bool_t AXIS2_CALL
-sandesha2_seq_property_mgr_update_or_insert(
-    sandesha2_seq_property_mgr_t *seq_prop_mgr,
-    const axis2_env_t *env,
-    sandesha2_seq_property_bean_t *bean)
-{
-    return seq_prop_mgr->ops->update_or_insert(seq_prop_mgr, env, bean);
+    return seq_prop_mgr->ops.retrieve_all(seq_prop_mgr, env);
 }
 

Modified: webservices/sandesha/trunk/c/src/storage/transaction.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/storage/transaction.c?view=diff&rev=485492&r1=485491&r2=485492
==============================================================================
--- webservices/sandesha/trunk/c/src/storage/transaction.c (original)
+++ webservices/sandesha/trunk/c/src/storage/transaction.c Sun Dec 10 20:28:58 2006
@@ -63,6 +63,6 @@
     const axis2_env_t *env,
     sandesha2_rm_bean_t *rm_bean)
 {
-    trans->ops->rollback(trans, env);
+    trans->ops->enlist(trans, env, rm_bean);
 }
 

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=485492&r1=485491&r2=485492
==============================================================================
--- webservices/sandesha/trunk/c/src/util/sandesha2_utils.c (original)
+++ webservices/sandesha/trunk/c/src/util/sandesha2_utils.c Sun Dec 10 20:28:58 2006
@@ -27,6 +27,7 @@
 #include <sandesha2_close_seq.h>
 #include <sandesha2_close_seq_res.h>
 #include <sandesha2_polling_mgr.h>
+#include <sandesha2_inmemory_storage_mgr.h>
 #include <axis2_string.h>
 #include <axis2_conf.h>
 #include <axis2_property.h>
@@ -482,7 +483,7 @@
     {
         /* TODO we need to class load the proper storage mgr */
         sandesha2_storage_mgr_t *storage_mgr = 
-                        sandesha2_storage_mgr_create(env, conf_ctx);
+                        sandesha2_inmemory_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);

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=485492&r1=485491&r2=485492
==============================================================================
--- webservices/sandesha/trunk/c/src/util/seq_mgr.c (original)
+++ webservices/sandesha/trunk/c/src/util/seq_mgr.c Sun Dec 10 20:28:58 2006
@@ -332,7 +332,8 @@
     axis2_endpoint_ref_t *reply_to_epr = NULL;
     axis2_char_t *addr = NULL;
     axis2_endpoint_ref_t *epr = NULL;
-    
+   
+    AXIS2_LOG_INFO(env->log, "Start:sandesha2_seq_mgr_setup_new_client_seq");
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, first_app_msg, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, int_seq_id, AXIS2_FAILURE);
@@ -491,6 +492,7 @@
         sandesha2_utils_start_sender_for_seq(env, conf_ctx, int_seq_id);
     sandesha2_seq_mgr_update_client_side_listener_if_needed(env, first_app_msg,
         anon_uri);
+    AXIS2_LOG_INFO(env->log, "Exit:sandesha2_seq_mgr_setup_new_client_seq");
     return AXIS2_SUCCESS;
 }
 

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=485492&r1=485491&r2=485492
==============================================================================
--- webservices/sandesha/trunk/c/src/util/terminate_mgr.c (original)
+++ webservices/sandesha/trunk/c/src/util/terminate_mgr.c Sun Dec 10 20:28:58 2006
@@ -421,7 +421,7 @@
             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_mgr_remove(create_seq_mgr, env,
                         sandesha2_create_seq_bean_get_create_seq_msg_id(
                         create_seq_bean, env));
         }

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=485492&r1=485491&r2=485492
==============================================================================
--- webservices/sandesha/trunk/c/src/workers/sender.c (original)
+++ webservices/sandesha/trunk/c/src/workers/sender.c Sun Dec 10 20:28:58 2006
@@ -183,6 +183,7 @@
     axis2_conf_ctx_t *conf_ctx, 
     axis2_char_t *seq_id)
 {
+    AXIS2_LOG_INFO(env->log, "Start:sandesha2_sender_run_for_seq");
     axis2_thread_mutex_lock(sender->mutex);
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, conf_ctx, AXIS2_FAILURE);
@@ -197,6 +198,7 @@
         sandesha2_sender_run(sender, env);
     }
     axis2_thread_mutex_unlock(sender->mutex);
+    AXIS2_LOG_INFO(env->log, "Exit:sandesha2_sender_run_for_seq");
     return AXIS2_SUCCESS;
 }
             
@@ -208,6 +210,7 @@
     axis2_thread_t *worker_thread = NULL;
     sandesha2_sender_args_t *args = NULL;
 
+    AXIS2_LOG_INFO(env->log, "Start:sandesha2_sender_run");
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     
     args = AXIS2_MALLOC(env->allocator, sizeof(sandesha2_sender_args_t)); 
@@ -222,8 +225,8 @@
                         "failed sandesha2_sender_run");
         return AXIS2_FAILURE;
     }
-    AXIS2_THREAD_POOL_THREAD_DETACH(env->thread_pool, worker_thread); 
-        
+    AXIS2_THREAD_POOL_THREAD_DETACH(env->thread_pool, worker_thread);     
+    AXIS2_LOG_INFO(env->log, "End:sandesha2_sender_run");
     return AXIS2_SUCCESS;
 }
 
@@ -246,6 +249,7 @@
     sender = args->impl;
     sender = (sandesha2_sender_t*)sender;
     
+    AXIS2_LOG_INFO(env->log, "Start:sandesha2_sender_worker_func");
     storage_mgr = sandesha2_utils_get_storage_mgr(env, sender->conf_ctx, 
         AXIS2_CONF_CTX_GET_CONF(sender->conf_ctx, env));
                         
@@ -268,9 +272,12 @@
         sender_bean = sandesha2_sender_mgr_get_next_msg_to_send(mgr, env);
         if(!sender_bean)
         {
+            AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "Sender Bean is NULL. "\
+                "So continue");
             continue;
         }
         msg_id = sandesha2_sender_bean_get_msg_id(sender_bean, env);
+        sandesha2_transaction_commit(transaction, env);
         if(msg_id)
         {
         /* Start a sender worker which will work on this message */
@@ -282,6 +289,7 @@
     #ifdef AXIS2_SVR_MULTI_THREADED
         AXIS2_THREAD_POOL_EXIT_THREAD(env->thread_pool, thd);
     #endif
+    AXIS2_LOG_INFO(env->log, "Exit:sandesha2_sender_worker_func");
     return NULL;
 }
    

Modified: webservices/sandesha/trunk/c/src/workers/sender_worker.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/workers/sender_worker.c?view=diff&rev=485492&r1=485491&r2=485492
==============================================================================
--- webservices/sandesha/trunk/c/src/workers/sender_worker.c (original)
+++ webservices/sandesha/trunk/c/src/workers/sender_worker.c Sun Dec 10 20:28:58 2006
@@ -172,6 +172,7 @@
     axis2_thread_t *worker_thread = NULL;
     sandesha2_sender_worker_args_t *args = NULL;
 
+    AXIS2_LOG_INFO(env->log, "Start:sandesha2_sender_worker_run");
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     
     args = AXIS2_MALLOC(env->allocator, sizeof(sandesha2_sender_worker_args_t)); 
@@ -187,6 +188,7 @@
         return AXIS2_FAILURE;
     }
     AXIS2_THREAD_POOL_THREAD_DETACH(env->thread_pool, worker_thread); 
+    AXIS2_LOG_INFO(env->log, "Exit:sandesha2_sender_worker_run");
     return AXIS2_SUCCESS;
 }
 
@@ -226,7 +228,7 @@
     msg_id = sender_worker->msg_id;
     transport_out = sender_worker->transport_out;
     
-    AXIS2_LOG_INFO(env->log, "[Sandesha2] Start:Sender Worker Worker function\n");        
+    AXIS2_LOG_INFO(env->log, "[Sandesha2] Entry:sandesha2_sender_worker_worker_func\n");        
     
     storage_mgr = sandesha2_utils_get_storage_mgr(env, 
         sender_worker->conf_ctx, 
@@ -264,6 +266,8 @@
         sender_worker_bean, sender_worker->conf_ctx, storage_mgr);
     if(!continue_sending)
     {
+        AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
+            "[sandesha2] Do not continue sending the message");
         return NULL;
     }
     
@@ -274,7 +278,11 @@
         
     if(qualified_for_sending && 0 != AXIS2_STRCMP(
         qualified_for_sending, SANDESHA2_VALUE_TRUE))
+    {
+        AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
+            "[sandesha2] Message is not qualified for sending sending");
             return NULL;
+    }
     rm_msg_ctx = sandesha2_msg_init_init_msg(env, msg_ctx);
     
     prop_bean = sandesha2_utils_get_property_bean_from_op(env, 
@@ -300,7 +308,11 @@
                 continue_sending = AXIS2_TRUE;
         }
         if(continue_sending)
+        {
+            AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[sandesha2] Continue "\
+                "Sending is true. So returning from Sender Worker");
             return NULL;
+        }
     }
     /* 
      *   This method is not implemented yet
@@ -441,7 +453,7 @@
     #ifdef AXIS2_SVR_MULTI_THREADED
         AXIS2_THREAD_POOL_EXIT_THREAD(env->thread_pool, thd);
     #endif
-    AXIS2_LOG_INFO(env->log, "[Sandesha2] Exit:Sender Worker Workder function\n");        
+    AXIS2_LOG_INFO(env->log, "[Sandesha2] Exit:sandesha2_sender_worker_worker_func\n");        
     return NULL;
 }
 



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