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/06 13:27:55 UTC

svn commit: r483051 [2/2] - in /webservices/sandesha/trunk/c/src/storage: ./ beans/ inmemory/

Copied: webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_storage_mgr.c (from r482886, webservices/sandesha/trunk/c/src/storage/inmemory/storage_mgr.c)
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_storage_mgr.c?view=diff&rev=483051&p1=webservices/sandesha/trunk/c/src/storage/inmemory/storage_mgr.c&r1=482886&p2=webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_storage_mgr.c&r2=483051
==============================================================================
--- webservices/sandesha/trunk/c/src/storage/inmemory/storage_mgr.c (original)
+++ webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_storage_mgr.c Wed Dec  6 04:27:54 2006
@@ -24,6 +24,7 @@
 #include <sandesha2_constants.h>
 #include <sandesha2_error.h>
 #include <sandesha2_utils.h>
+#include <sandesha2_rm_bean.h>
 #include <axis2_log.h>
 #include <axis2_hash.h>
 #include <axis2_thread.h>
@@ -33,12 +34,12 @@
 #include <axis2_conf_ctx.h>
 
 /** 
- * @brief Sandesha2 Storage Manager Struct Impl
- *   Sandesha2 Storage Manager 
+ * @brief Sandesha2 Inmemory Storage Manager Struct Impl
+ *   Sandesha2 Inmemory Storage Manager 
  */ 
-struct sandesha2_storage_mgr_t
+typedef struct sandesha2_inmemory_storage_mgr
 {
-	sandesha2_storage_mgr_t *instance;
+	sandesha2_storage_mgr_t storage_mgr;
     axis2_char_t *SANDESHA2_MSG_MAP_KEY;
     sandesha2_create_seq_mgr_t *create_seq_mgr;
     sandesha2_next_msg_mgr_t *next_msg_mgr;
@@ -46,217 +47,337 @@
     sandesha2_sender_mgr_t *sender_mgr;
     sandesha2_invoker_mgr_t *invoker_mgr;
     axis2_conf_ctx_t *conf_ctx;
+} sandesha2_inmemory_storage_mgr_t;
+
+#define SANDESHA2_INTF_TO_IMPL(trans) \
+    ((sandesha2_inmemory_storage_mgr_t *) trans)
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+sandesha2_inmemory_storage_mgr_free_void_arg(
+    void *storage_mgr,
+    const axis2_env_t *env);
+
+axis2_status_t AXIS2_CALL 
+sandesha2_inmemory_storage_mgr_free(
+    sandesha2_storage_mgr_t *storage,
+    const axis2_env_t *envv);
+
+struct sandesha2_transaction *AXIS2_CALL
+sandesha2_inmemory_storage_mgr_get_transaction(
+    sandesha2_storage_mgr_t *storage,
+    const axis2_env_t *env);
+
+void AXIS2_CALL
+sandesha2_inmemory_storage_mgr_enlist_bean(
+    sandesha2_storage_mgr_t *storage_mgr,
+    const axis2_env_t *env,
+    sandesha2_rm_bean_t *rm_bean);
+
+sandesha2_create_seq_mgr_t *AXIS2_CALL
+sandesha2_inmemory_storage_mgr_get_create_seq_mgr(
+    sandesha2_storage_mgr_t *storage,
+    const axis2_env_t *env);
+
+sandesha2_next_msg_mgr_t *AXIS2_CALL
+sandesha2_inmemory_storage_mgr_get_next_msg_mgr(
+    sandesha2_storage_mgr_t *storage,
+    const axis2_env_t *env);
+
+sandesha2_sender_mgr_t *AXIS2_CALL
+sandesha2_inmemory_storage_mgr_get_retrans_mgr(
+    sandesha2_storage_mgr_t *storage,
+    const axis2_env_t *env);
+
+sandesha2_seq_property_mgr_t *AXIS2_CALL
+sandesha2_inmemory_storage_mgr_get_seq_property_mgr(
+    sandesha2_storage_mgr_t *storage,
+    const axis2_env_t *env);
+
+sandesha2_invoker_mgr_t *AXIS2_CALL
+sandesha2_inmemory_storage_mgr_get_storage_map_mgr(
+    sandesha2_storage_mgr_t *storage,
+    const axis2_env_t *env);
+
+axis2_status_t AXIS2_CALL
+sandesha2_inmemory_storage_mgr_set_ctx(
+    sandesha2_storage_mgr_t *storage,
+    const axis2_env_t *env,
+    axis2_conf_ctx_t *conf_ctx);
+
+axis2_conf_ctx_t *AXIS2_CALL
+sandesha2_inmemory_storage_mgr_get_ctx(
+    sandesha2_storage_mgr_t *storage,
+    const axis2_env_t *env);
+
+axis2_status_t AXIS2_CALL
+sandesha2_inmemory_storage_mgr_init(
+    sandesha2_storage_mgr_t *storage,
+    const axis2_env_t *env,
+    axis2_conf_ctx_t *conf_ctx);
+	
+axis2_msg_ctx_t *AXIS2_CALL
+sandesha2_inmemory_storage_mgr_retrieve_msg_ctx(
+    sandesha2_storage_mgr_t *storage,
+    const axis2_env_t *env,
+    axis2_char_t *key,
+    axis2_conf_ctx_t *conf_ctx);
+		
+axis2_status_t AXIS2_CALL
+sandesha2_inmemory_storage_mgr_store_msg_ctx(
+    sandesha2_storage_mgr_t *storage,
+    const axis2_env_t *env,
+    axis2_char_t *key,
+    axis2_msg_ctx_t *msg_ctx);
+			
+axis2_status_t AXIS2_CALL
+sandesha2_inmemory_storage_mgr_update_msg_ctx(
+    sandesha2_storage_mgr_t *storage,
+    const axis2_env_t *env,
+    axis2_char_t *key,
+    axis2_msg_ctx_t *msg_ctx);
+
+axis2_status_t AXIS2_CALL
+sandesha2_inmemory_storage_mgr_remove_msg_ctx(
+    sandesha2_storage_mgr_t *storage,
+    const axis2_env_t *env,
+    axis2_char_t *key);
+
+axis2_status_t AXIS2_CALL
+sandesha2_inmemory_storage_mgr_init_storage(
+    sandesha2_storage_mgr_t *storage,
+    const axis2_env_t *env,
+    axis2_module_desc_t *module_desc);
+
+axiom_soap_envelope_t *AXIS2_CALL
+sandesha2_inmemory_storage_mgr_retrieve_soap_envelope(
+    sandesha2_storage_mgr_t *storage,
+    const axis2_env_t *env,
+    axis2_char_t *key);
+
+axis2_status_t AXIS2_CALL
+sandesha2_inmemory_storage_mgr_store_soap_envelope(
+    sandesha2_storage_mgr_t *storage,
+    const axis2_env_t *env,
+    axiom_soap_envelope_t *soap_env,
+    axis2_char_t *key);
+
+static const sandesha2_storage_mgr_ops_t storage_mgr_ops = 
+{
+    sandesha2_inmemory_storage_mgr_free,
+    sandesha2_inmemory_storage_mgr_free_void_arg,
+    sandesha2_inmemory_storage_mgr_get_transaction,
+    sandesha2_inmemory_storage_mgr_enlist_bean,
+    sandesha2_inmemory_storage_mgr_get_create_seq_mgr,
+    sandesha2_inmemory_storage_mgr_get_next_msg_mgr,
+    sandesha2_inmemory_storage_mgr_get_retrans_mgr,
+    sandesha2_inmemory_storage_mgr_get_seq_property_mgr,
+    sandesha2_inmemory_storage_mgr_get_storage_map_mgr,
+    sandesha2_inmemory_storage_mgr_set_ctx,
+    sandesha2_inmemory_storage_mgr_get_ctx,
+    sandesha2_inmemory_storage_mgr_init,
+    sandesha2_inmemory_storage_mgr_retrieve_msg_ctx,
+    sandesha2_inmemory_storage_mgr_store_msg_ctx,
+    sandesha2_inmemory_storage_mgr_update_msg_ctx,
+    sandesha2_inmemory_storage_mgr_remove_msg_ctx,
+    sandesha2_inmemory_storage_mgr_init_storage,
+    sandesha2_inmemory_storage_mgr_retrieve_soap_envelope,
+    sandesha2_inmemory_storage_mgr_store_soap_envelope
 };
 
 AXIS2_EXTERN sandesha2_storage_mgr_t * AXIS2_CALL
-sandesha2_storage_mgr_create(
+sandesha2_inmemory_storage_mgr_create(
     const axis2_env_t *env,
     axis2_conf_ctx_t *conf_ctx)
 {
-    sandesha2_storage_mgr_t *storage_mgr = NULL;
+    sandesha2_inmemory_storage_mgr_t *storage_mgr_impl = NULL;
     axis2_ctx_t *ctx = NULL;
     
     AXIS2_ENV_CHECK(env, NULL);
-    storage_mgr = AXIS2_MALLOC(env->allocator, 
-                    sizeof(sandesha2_storage_mgr_t));
-
-    storage_mgr->instance = NULL;
-    storage_mgr->SANDESHA2_MSG_MAP_KEY = AXIS2_STRDUP("Sandesha2MessageMap", env);
-    storage_mgr->create_seq_mgr = NULL;
-    storage_mgr->next_msg_mgr = NULL;
-    storage_mgr->seq_property_mgr = NULL;
-    storage_mgr->sender_mgr = NULL;
-    storage_mgr->invoker_mgr = NULL;
-    storage_mgr->conf_ctx = conf_ctx;
+    storage_mgr_impl = AXIS2_MALLOC(env->allocator, 
+        sizeof(sandesha2_inmemory_storage_mgr_t));
 
+    storage_mgr_impl->SANDESHA2_MSG_MAP_KEY = AXIS2_STRDUP("Sandesha2MessageMap", 
+        env);
+    storage_mgr_impl->conf_ctx = conf_ctx;
     ctx = AXIS2_CONF_CTX_GET_BASE(conf_ctx, env);
-    storage_mgr->create_seq_mgr = sandesha2_create_seq_mgr_create(env, ctx);
-    storage_mgr->next_msg_mgr = sandesha2_next_msg_mgr_create(env, ctx);
-    storage_mgr->seq_property_mgr = sandesha2_seq_property_mgr_create(env, ctx);
-    storage_mgr->sender_mgr = sandesha2_sender_mgr_create(env, ctx);
-    storage_mgr->invoker_mgr = sandesha2_invoker_mgr_create(env, ctx);
-
-    return storage_mgr;
-}
+    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);
 
-sandesha2_storage_mgr_t *AXIS2_CALL
-sandesha2_storage_mgr_get_instance(
-    sandesha2_storage_mgr_t *storage_mgr,
-    const axis2_env_t *env,
-    axis2_conf_ctx_t *conf_ctx)
-{
-    AXIS2_ENV_CHECK(env, AXIS2_FALSE);
-   
-    if(!storage_mgr->instance)
-    {
-        storage_mgr->instance = sandesha2_storage_mgr_create(env, conf_ctx);
-    }
+    storage_mgr_impl->storage_mgr.ops = &storage_mgr_ops;
 
-    return storage_mgr->instance;
+    return &(storage_mgr_impl->storage_mgr);
 }
 
 axis2_status_t AXIS2_CALL
-sandesha2_storage_mgr_free_void_arg(
+sandesha2_inmemory_storage_mgr_free_void_arg(
     void *storage_mgr,
     const axis2_env_t *env)
 {
-    sandesha2_storage_mgr_t *storage_mgr_l = NULL;
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
-    storage_mgr_l = (sandesha2_storage_mgr_t *) storage_mgr;
-    return sandesha2_storage_mgr_free(storage_mgr_l, env);
-    return AXIS2_SUCCESS;
+    storage_mgr = (sandesha2_inmemory_storage_mgr_t *) storage_mgr;
+    return sandesha2_inmemory_storage_mgr_free(storage_mgr, env);
 }
 
 axis2_status_t AXIS2_CALL
-sandesha2_storage_mgr_free(
+sandesha2_inmemory_storage_mgr_free(
     sandesha2_storage_mgr_t *storage_mgr,
     const axis2_env_t *env)
 {
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    sandesha2_inmemory_storage_mgr_t *storage_mgr_impl = NULL;
+    storage_mgr_impl = SANDESHA2_INTF_TO_IMPL(storage_mgr);
 
-    if(storage_mgr->instance)
-    {
-        sandesha2_storage_mgr_free(storage_mgr->instance, env);
-        storage_mgr->instance = NULL;
-    }
-    if(storage_mgr->create_seq_mgr)
+    if(storage_mgr_impl->create_seq_mgr)
     {
-        SANDESHA2_CREATE_SEQ_MGR_FREE(storage_mgr->create_seq_mgr, env);
-        storage_mgr->create_seq_mgr = NULL;
+        SANDESHA2_CREATE_SEQ_MGR_FREE(storage_mgr_impl->create_seq_mgr, env);
+        storage_mgr_impl->create_seq_mgr = NULL;
     }
-    if(storage_mgr->next_msg_mgr)
+    if(storage_mgr_impl->next_msg_mgr)
     {
-        sandesha2_next_msg_mgr_free(storage_mgr->next_msg_mgr, env);
-        storage_mgr->next_msg_mgr = NULL;
+        sandesha2_next_msg_mgr_free(storage_mgr_impl->next_msg_mgr, env);
+        storage_mgr_impl->next_msg_mgr = NULL;
     }
-    if(storage_mgr->sender_mgr)
+    if(storage_mgr_impl->sender_mgr)
     {
-        sandesha2_sender_mgr_free(storage_mgr->sender_mgr, env);
-        storage_mgr->sender_mgr = NULL;
+        sandesha2_sender_mgr_free(storage_mgr_impl->sender_mgr, env);
+        storage_mgr_impl->sender_mgr = NULL;
     }
-    if(storage_mgr->seq_property_mgr)
+    if(storage_mgr_impl->seq_property_mgr)
     {
-        sandesha2_seq_property_mgr_free(storage_mgr->seq_property_mgr, env);
-        storage_mgr->seq_property_mgr = NULL;
+        sandesha2_seq_property_mgr_free(storage_mgr_impl->seq_property_mgr, 
+            env);
+        storage_mgr_impl->seq_property_mgr = NULL;
     }
-    if(storage_mgr->invoker_mgr)
+    if(storage_mgr_impl->invoker_mgr)
     {
-        sandesha2_invoker_mgr_free(storage_mgr->invoker_mgr, env);
-        storage_mgr->invoker_mgr = NULL;
+        sandesha2_invoker_mgr_free(storage_mgr_impl->invoker_mgr, env);
+        storage_mgr_impl->invoker_mgr = NULL;
     }
-    if(storage_mgr->SANDESHA2_MSG_MAP_KEY)
+    if(storage_mgr_impl->SANDESHA2_MSG_MAP_KEY)
     {
-        AXIS2_FREE(env->allocator, storage_mgr->SANDESHA2_MSG_MAP_KEY);
-        storage_mgr->SANDESHA2_MSG_MAP_KEY = NULL;
+        AXIS2_FREE(env->allocator, storage_mgr_impl->SANDESHA2_MSG_MAP_KEY);
+        storage_mgr_impl->SANDESHA2_MSG_MAP_KEY = NULL;
     }
 
-    if(storage_mgr)
+    if(storage_mgr_impl)
     {
-        AXIS2_FREE(env->allocator, storage_mgr);
-        storage_mgr = NULL;
+        AXIS2_FREE(env->allocator, storage_mgr_impl);
+        storage_mgr_impl = NULL;
     }
     return AXIS2_SUCCESS;
 }
 
 sandesha2_transaction_t *AXIS2_CALL
-sandesha2_storage_mgr_get_transaction(
+sandesha2_inmemory_storage_mgr_get_transaction(
     sandesha2_storage_mgr_t *storage_mgr,
     const axis2_env_t *env)
 {
-    AXIS2_ENV_CHECK(env, AXIS2_FALSE);
+    return sandesha2_transaction_create(env, storage_mgr);
+}
 
-    return sandesha2_transaction_create(env);
+void AXIS2_CALL
+sandesha2_inmemory_storage_mgr_enlist_bean(
+    sandesha2_storage_mgr_t *storage_mgr,
+    const axis2_env_t *env,
+    sandesha2_rm_bean_t *rm_bean)
+{
+    sandesha2_transaction_t *t = sandesha2_inmemory_storage_mgr_get_transaction(
+        storage_mgr, env);
+    sandesha2_transaction_enlist(t, env, rm_bean);
 }
 
 sandesha2_create_seq_mgr_t *AXIS2_CALL
-sandesha2_storage_mgr_get_create_seq_mgr(
+sandesha2_inmemory_storage_mgr_get_create_seq_mgr(
     sandesha2_storage_mgr_t *storage_mgr,
     const axis2_env_t *env)
 {
-    AXIS2_ENV_CHECK(env, AXIS2_FALSE);
-
-    return storage_mgr->create_seq_mgr;
+    sandesha2_inmemory_storage_mgr_t *storage_mgr_impl = NULL;
+    storage_mgr_impl = SANDESHA2_INTF_TO_IMPL(storage_mgr);
+    return storage_mgr_impl->create_seq_mgr;
 }
 
 sandesha2_next_msg_mgr_t *AXIS2_CALL
-sandesha2_storage_mgr_get_next_msg_mgr(
+sandesha2_inmemory_storage_mgr_get_next_msg_mgr(
     sandesha2_storage_mgr_t *storage_mgr,
     const axis2_env_t *env)
 {
-    AXIS2_ENV_CHECK(env, AXIS2_FALSE);
-
-    return storage_mgr->next_msg_mgr;
+    sandesha2_inmemory_storage_mgr_t *storage_mgr_impl = NULL;
+    storage_mgr_impl = SANDESHA2_INTF_TO_IMPL(storage_mgr);
+    return storage_mgr_impl->next_msg_mgr;
 }
 
 sandesha2_sender_mgr_t *AXIS2_CALL
-sandesha2_storage_mgr_get_retrans_mgr(
+sandesha2_inmemory_storage_mgr_get_retrans_mgr(
     sandesha2_storage_mgr_t *storage_mgr,
     const axis2_env_t *env)
 {
-    AXIS2_ENV_CHECK(env, AXIS2_FALSE);
-
-    return storage_mgr->sender_mgr;
+    sandesha2_inmemory_storage_mgr_t *storage_mgr_impl = NULL;
+    storage_mgr_impl = SANDESHA2_INTF_TO_IMPL(storage_mgr);
+    return storage_mgr_impl->sender_mgr;
 }
 
 sandesha2_seq_property_mgr_t *AXIS2_CALL
-sandesha2_storage_mgr_get_seq_property_mgr(
+sandesha2_inmemory_storage_mgr_get_seq_property_mgr(
     sandesha2_storage_mgr_t *storage_mgr,
     const axis2_env_t *env)
 {
-    AXIS2_ENV_CHECK(env, AXIS2_FALSE);
+    sandesha2_inmemory_storage_mgr_t *storage_mgr_impl = NULL;
+    storage_mgr_impl = SANDESHA2_INTF_TO_IMPL(storage_mgr);
 
-    return storage_mgr->seq_property_mgr;
+    return storage_mgr_impl->seq_property_mgr;
 }
 
 sandesha2_invoker_mgr_t *AXIS2_CALL
-sandesha2_storage_mgr_get_storage_map_mgr(
+sandesha2_inmemory_storage_mgr_get_storage_map_mgr(
     sandesha2_storage_mgr_t *storage_mgr,
     const axis2_env_t *env)
 {
-    AXIS2_ENV_CHECK(env, AXIS2_FALSE);
-
-    return storage_mgr->invoker_mgr;
+    sandesha2_inmemory_storage_mgr_t *storage_mgr_impl = NULL;
+    storage_mgr_impl = SANDESHA2_INTF_TO_IMPL(storage_mgr);
+    return storage_mgr_impl->invoker_mgr;
 }
 
 axis2_status_t AXIS2_CALL
-sandesha2_storage_mgr_set_ctx(
+sandesha2_inmemory_storage_mgr_set_ctx(
     sandesha2_storage_mgr_t *storage_mgr,
     const axis2_env_t *env,
     axis2_conf_ctx_t *conf_ctx)
 {
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    sandesha2_inmemory_storage_mgr_t *storage_mgr_impl = NULL;
+    storage_mgr_impl = SANDESHA2_INTF_TO_IMPL(storage_mgr);
     AXIS2_PARAM_CHECK(env->error, conf_ctx, AXIS2_FAILURE);
-
-    storage_mgr->conf_ctx = conf_ctx;
+    storage_mgr_impl->conf_ctx = conf_ctx;
     return AXIS2_SUCCESS;
 }
 
 axis2_conf_ctx_t *AXIS2_CALL
-sandesha2_storage_mgr_get_ctx(
+sandesha2_inmemory_storage_mgr_get_ctx(
     sandesha2_storage_mgr_t *storage_mgr,
     const axis2_env_t *env)
 {
-    AXIS2_ENV_CHECK(env, NULL);
-
-    return storage_mgr->conf_ctx;
+    sandesha2_inmemory_storage_mgr_t *storage_mgr_impl = NULL;
+    storage_mgr_impl = SANDESHA2_INTF_TO_IMPL(storage_mgr);
+    return storage_mgr_impl->conf_ctx;
 }
 
 axis2_status_t AXIS2_CALL
-sandesha2_storage_mgr_init(
+sandesha2_inmemory_storage_mgr_init(
     sandesha2_storage_mgr_t *storage_mgr,
     const axis2_env_t *env,
     axis2_conf_ctx_t *conf_ctx)
 {
     AXIS2_ENV_CHECK(env, AXIS2_FALSE);
     
-    sandesha2_storage_mgr_set_ctx(storage_mgr, env, conf_ctx);
+    sandesha2_inmemory_storage_mgr_set_ctx(storage_mgr, env, conf_ctx);
 
     return AXIS2_SUCCESS;
 }
 
 axis2_msg_ctx_t *AXIS2_CALL
-sandesha2_storage_mgr_retrieve_msg_ctx(
+sandesha2_inmemory_storage_mgr_retrieve_msg_ctx(
     sandesha2_storage_mgr_t *storage_mgr,
     const axis2_env_t *env,
     axis2_char_t *key,
@@ -265,22 +386,21 @@
     axis2_hash_t *storage_map = NULL;
     axis2_property_t *property = NULL;
     axis2_ctx_t *ctx = NULL;
-
-    AXIS2_ENV_CHECK(env, AXIS2_FALSE);
-   
-    conf_ctx = sandesha2_storage_mgr_get_ctx(storage_mgr, env);
+    sandesha2_inmemory_storage_mgr_t *storage_mgr_impl = NULL;
+    storage_mgr_impl = SANDESHA2_INTF_TO_IMPL(storage_mgr);
+    conf_ctx = sandesha2_inmemory_storage_mgr_get_ctx(storage_mgr, env);
     ctx = AXIS2_CONF_CTX_GET_BASE(conf_ctx, env);
     property = AXIS2_CTX_GET_PROPERTY(ctx, env, 
-            storage_mgr->SANDESHA2_MSG_MAP_KEY, AXIS2_FALSE);
+            storage_mgr_impl->SANDESHA2_MSG_MAP_KEY, AXIS2_FALSE);
     storage_map = (axis2_hash_t *) AXIS2_PROPERTY_GET_VALUE(property, env);
     if(!storage_map)
         return NULL;
-
-    return (axis2_msg_ctx_t *) axis2_hash_get(storage_map, key, AXIS2_HASH_KEY_STRING);
+    return (axis2_msg_ctx_t *) axis2_hash_get(storage_map, key, 
+        AXIS2_HASH_KEY_STRING);
 }
 		
 axis2_status_t AXIS2_CALL
-sandesha2_storage_mgr_store_msg_ctx(
+sandesha2_inmemory_storage_mgr_store_msg_ctx(
     sandesha2_storage_mgr_t *storage_mgr,
     const axis2_env_t *env,
     axis2_char_t *key,
@@ -290,13 +410,13 @@
     axis2_property_t *property = NULL;
     axis2_conf_ctx_t *conf_ctx = NULL;
     axis2_ctx_t *ctx = NULL;
-
-    AXIS2_ENV_CHECK(env, AXIS2_FALSE);
+    sandesha2_inmemory_storage_mgr_t *storage_mgr_impl = NULL;
+    storage_mgr_impl = SANDESHA2_INTF_TO_IMPL(storage_mgr);
    
-    conf_ctx = sandesha2_storage_mgr_get_ctx(storage_mgr, env);
+    conf_ctx = sandesha2_inmemory_storage_mgr_get_ctx(storage_mgr, env);
     ctx = AXIS2_CONF_CTX_GET_BASE(conf_ctx, env);
     property = AXIS2_CTX_GET_PROPERTY(ctx, env, 
-            storage_mgr->SANDESHA2_MSG_MAP_KEY, AXIS2_FALSE);
+            storage_mgr_impl->SANDESHA2_MSG_MAP_KEY, AXIS2_FALSE);
     if(!property)
     {
         property = axis2_property_create(env);
@@ -308,7 +428,7 @@
         AXIS2_PROPERTY_SET_SCOPE(property, env, AXIS2_SCOPE_APPLICATION);
         AXIS2_PROPERTY_SET_VALUE(property, env, storage_map);
         AXIS2_PROPERTY_SET_FREE_FUNC(property, env, axis2_hash_free_void_arg);
-        AXIS2_CTX_SET_PROPERTY(ctx, env, storage_mgr->SANDESHA2_MSG_MAP_KEY, 
+        AXIS2_CTX_SET_PROPERTY(ctx, env, storage_mgr_impl->SANDESHA2_MSG_MAP_KEY, 
                 property, AXIS2_FALSE);
     }
     if(!key)
@@ -321,7 +441,7 @@
 }
 			
 axis2_status_t AXIS2_CALL
-sandesha2_storage_mgr_update_msg_ctx(
+sandesha2_inmemory_storage_mgr_update_msg_ctx(
     sandesha2_storage_mgr_t *storage_mgr,
     const axis2_env_t *env,
     axis2_char_t *key,
@@ -332,13 +452,12 @@
     axis2_conf_ctx_t *conf_ctx = NULL;
     axis2_ctx_t *ctx = NULL;
     void *old_entry = NULL;
-
-    AXIS2_ENV_CHECK(env, AXIS2_FALSE);
-   
-    conf_ctx = sandesha2_storage_mgr_get_ctx(storage_mgr, env);
+    sandesha2_inmemory_storage_mgr_t *storage_mgr_impl = NULL;
+    storage_mgr_impl = SANDESHA2_INTF_TO_IMPL(storage_mgr);
+    conf_ctx = sandesha2_inmemory_storage_mgr_get_ctx(storage_mgr, env);
     ctx = AXIS2_CONF_CTX_GET_BASE(conf_ctx, env);
     property = AXIS2_CTX_GET_PROPERTY(ctx, env, 
-            storage_mgr->SANDESHA2_MSG_MAP_KEY, AXIS2_FALSE);
+            storage_mgr_impl->SANDESHA2_MSG_MAP_KEY, AXIS2_FALSE);
     if(!property)
     {
         AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_STORAGE_MAP_NOT_PRESENT, 
@@ -359,11 +478,11 @@
                 AXIS2_FAILURE);
         return AXIS2_FAILURE;
     }
-    return sandesha2_storage_mgr_store_msg_ctx(storage_mgr, env, key, msg_ctx);
+    return sandesha2_inmemory_storage_mgr_store_msg_ctx(storage_mgr, env, key, msg_ctx);
 }
 
 axis2_status_t AXIS2_CALL
-sandesha2_storage_mgr_remove_msg_ctx(
+sandesha2_inmemory_storage_mgr_remove_msg_ctx(
     sandesha2_storage_mgr_t *storage_mgr,
     const axis2_env_t *env,
     axis2_char_t *key)
@@ -373,13 +492,12 @@
     axis2_conf_ctx_t *conf_ctx = NULL;
     axis2_ctx_t *ctx = NULL;
     void *entry = NULL;
-
-    AXIS2_ENV_CHECK(env, AXIS2_FALSE);
-   
-    conf_ctx = sandesha2_storage_mgr_get_ctx(storage_mgr, env);
+    sandesha2_inmemory_storage_mgr_t *storage_mgr_impl = NULL;
+    storage_mgr_impl = SANDESHA2_INTF_TO_IMPL(storage_mgr);
+    conf_ctx = sandesha2_inmemory_storage_mgr_get_ctx(storage_mgr, env);
     ctx = AXIS2_CONF_CTX_GET_BASE(conf_ctx, env);
     property = AXIS2_CTX_GET_PROPERTY(ctx, env, 
-            storage_mgr->SANDESHA2_MSG_MAP_KEY, AXIS2_FALSE);
+            storage_mgr_impl->SANDESHA2_MSG_MAP_KEY, AXIS2_FALSE);
     if(!property)
     {
         AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_STORAGE_MAP_NOT_PRESENT, 
@@ -402,7 +520,7 @@
 }
 
 axis2_status_t AXIS2_CALL
-sandesha2_storage_mgr_init_storage(
+sandesha2_inmemory_storage_mgr_init_storage(
     sandesha2_storage_mgr_t *storage_mgr,
     const axis2_env_t *env,
     axis2_module_desc_t *module_desc)
@@ -411,7 +529,7 @@
 }
 
 axiom_soap_envelope_t *AXIS2_CALL
-sandesha2_storage_mgr_retrieve_soap_envelope(
+sandesha2_inmemory_storage_mgr_retrieve_soap_envelope(
     sandesha2_storage_mgr_t *storage_mgr,
     const axis2_env_t *env,
     axis2_char_t *key)
@@ -421,7 +539,7 @@
 }
 
 axis2_status_t AXIS2_CALL
-sandesha2_storage_mgr_store_soap_envelope(
+sandesha2_inmemory_storage_mgr_store_soap_envelope(
     sandesha2_storage_mgr_t *storage_mgr,
     const axis2_env_t *env,
     axiom_soap_envelope_t *soap_env,

Copied: webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_transaction.c (from r482886, webservices/sandesha/trunk/c/src/storage/inmemory/transaction.c)
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_transaction.c?view=diff&rev=483051&p1=webservices/sandesha/trunk/c/src/storage/inmemory/transaction.c&r1=482886&p2=webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_transaction.c&r2=483051
==============================================================================
--- webservices/sandesha/trunk/c/src/storage/inmemory/transaction.c (original)
+++ webservices/sandesha/trunk/c/src/storage/inmemory/inmemory_transaction.c Wed Dec  6 04:27:54 2006
@@ -14,105 +14,222 @@
  * limitations under the License.
  */
  
+#include <sandesha2_inmemory_transaction.h>
 #include <sandesha2_transaction.h>
 #include <sandesha2_constants.h>
 #include <sandesha2_error.h>
+#include <sandesha2_rm_bean.h>
+#include <sandesha2_storage_mgr.h>
 #include <axis2_log.h>
 #include <axis2_hash.h>
 #include <axis2_thread.h>
 #include <axis2_property.h>
+#include <platforms/axis2_platform_auto_sense.h>
 
-typedef struct sandesha2_transaction_impl sandesha2_transaction_impl_t;
+typedef struct sandesha2_inmemory_transaction_impl 
+    sandesha2_inmemory_transaction_impl_t;
 
 /** 
- * @brief Sandesha Sequence Report Struct Impl
- *   Sandesha Sequence Report 
+ * @brief Sandesha Inmemory Transaction Struct Impl
+ *   Sandesha2 Inmemory Transaction 
  */ 
-struct sandesha2_transaction_impl
+struct sandesha2_inmemory_transaction_impl
 {
-    sandesha2_transaction_t transaction;
-
+    sandesha2_transaction_t trans;
+    sandesha2_storage_mgr_t *storage_mgr;
+    axis2_array_list_t *enlisted_beans;
+    axis2_thread_mutex_t *mutex;
 };
 
-#define SANDESHA2_INTF_TO_IMPL(transaction) ((sandesha2_transaction_impl_t *) transaction)
+#define SANDESHA2_INTF_TO_IMPL(trans) \
+    ((sandesha2_inmemory_transaction_impl_t *) trans)
 
-axis2_status_t AXIS2_CALL 
-sandesha2_transaction_free(
-        void *transaction,
-        const axis2_env_t *envv);
-
-axis2_status_t AXIS2_CALL
-sandesha2_transaction_commit(
-        sandesha2_transaction_t *transaction,
-        const axis2_env_t *env);
-
-axis2_status_t AXIS2_CALL
-sandesha2_transaction_rollback(
-        sandesha2_transaction_t *transaction,
-        const axis2_env_t *env);
+static axis2_status_t
+sandesha2_inmemory_transaction_free(
+    sandesha2_transaction_t *trans,
+    const axis2_env_t *env);
+
+static axis2_bool_t
+sandesha2_inmemory_transaction_is_active(
+    sandesha2_transaction_t *trans,
+    const axis2_env_t *env);
+
+static void
+sandesha2_inmemory_transaction_commit(
+    sandesha2_transaction_t *trans,
+    const axis2_env_t *env);
+
+static void
+sandesha2_inmemory_transaction_rollback(
+    sandesha2_transaction_t *trans,
+    const axis2_env_t *env);
+
+static void
+sandesha2_inmemory_transaction_enlist(
+    sandesha2_transaction_t *trans,
+    const axis2_env_t *env,
+    sandesha2_rm_bean_t *rm_bean);
+
+static void 
+sandesha2_inmemory_transaction_release_locks(
+    sandesha2_transaction_t *trans,
+    const axis2_env_t *env);
+
+static const sandesha2_transaction_ops_t transaction_ops = 
+{
+    sandesha2_inmemory_transaction_free,
+    sandesha2_inmemory_transaction_is_active,
+    sandesha2_inmemory_transaction_commit,
+    sandesha2_inmemory_transaction_rollback,
+    sandesha2_inmemory_transaction_enlist
+};
 
 AXIS2_EXTERN sandesha2_transaction_t* AXIS2_CALL
-sandesha2_transaction_create(
-        const axis2_env_t *env)
+sandesha2_inmemory_transaction_create(
+    const axis2_env_t *env,
+    sandesha2_storage_mgr_t *storage_mgr)
 {
-    sandesha2_transaction_impl_t *transaction_impl = NULL;
+    sandesha2_inmemory_transaction_impl_t *trans_impl = NULL;
     
     AXIS2_ENV_CHECK(env, NULL);
     
-    transaction_impl =  (sandesha2_transaction_impl_t *)AXIS2_MALLOC 
-                        (env->allocator, 
-                        sizeof(sandesha2_transaction_impl_t));
+    trans_impl =  (sandesha2_inmemory_transaction_impl_t *)AXIS2_MALLOC 
+        (env->allocator, sizeof(sandesha2_inmemory_transaction_impl_t));
 
-    transaction_impl->transaction.ops = AXIS2_MALLOC(env->allocator, 
-                    sizeof(sandesha2_transaction_ops_t)); 
+    trans_impl->storage_mgr = storage_mgr;
+    trans_impl->enlisted_beans = NULL;
+    trans_impl->mutex = axis2_thread_mutex_create(env->allocator,
+        AXIS2_THREAD_MUTEX_DEFAULT);
+    trans_impl->trans.ops = AXIS2_MALLOC(env->allocator, 
+        sizeof(sandesha2_transaction_ops_t)); 
     
-    transaction_impl->transaction.ops->free = sandesha2_transaction_free;
-    transaction_impl->transaction.ops->commit = 
-        sandesha2_transaction_commit;
-    transaction_impl->transaction.ops->rollback = 
-        sandesha2_transaction_rollback;
+    trans_impl->trans.ops = &transaction_ops;
 
-    return &(transaction_impl->transaction);
+    return &(trans_impl->trans);
 }
 
-axis2_status_t AXIS2_CALL
-sandesha2_transaction_free(
-        void *transaction,
-        const axis2_env_t *env)
+static axis2_status_t
+sandesha2_inmemory_transaction_free(
+    sandesha2_transaction_t *trans,
+    const axis2_env_t *env)
 {
-    sandesha2_transaction_impl_t *transaction_impl = NULL;
+    sandesha2_inmemory_transaction_impl_t *trans_impl = NULL;
 
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-    transaction_impl = SANDESHA2_INTF_TO_IMPL(transaction);
+    trans_impl = SANDESHA2_INTF_TO_IMPL(trans);
 
-    if((&(transaction_impl->transaction))->ops)
+    if(trans_impl->mutex)
+    {
+        axis2_thread_mutex_destroy(trans_impl->mutex);
+        trans_impl->mutex = NULL;
+    } 
+    if((&(trans_impl->trans))->ops)
     {
-        AXIS2_FREE(env->allocator, (&(transaction_impl->transaction))->ops);
-        (&(transaction_impl->transaction))->ops = NULL;
+        AXIS2_FREE(env->allocator, (&(trans_impl->trans))->ops);
+        (&(trans_impl->trans))->ops = NULL;
     }
-
-    if(transaction_impl)
+    if(trans_impl->enlisted_beans)
+    {
+        AXIS2_ARRAY_LIST_FREE(trans_impl->enlisted_beans, env);
+        trans_impl->enlisted_beans = NULL;
+    }
+    if(trans_impl)
     {
-        AXIS2_FREE(env->allocator, transaction_impl);
-        transaction_impl = NULL;
+        AXIS2_FREE(env->allocator, trans_impl);
+        trans_impl = NULL;
     }
     return AXIS2_SUCCESS;
 }
 
-axis2_status_t AXIS2_CALL
-sandesha2_transaction_commit(
-        sandesha2_transaction_t *transaction,
-        const axis2_env_t *env)
+static axis2_bool_t
+sandesha2_inmemory_transaction_is_active(
+    sandesha2_transaction_t *trans,
+    const axis2_env_t *env)
 {
-    return AXIS2_SUCCESS;
+    sandesha2_inmemory_transaction_impl_t *trans_impl = NULL;
+    trans_impl = SANDESHA2_INTF_TO_IMPL(trans);
+    int size = 0;
+    if(trans_impl->enlisted_beans)
+        size = AXIS2_ARRAY_LIST_SIZE(trans_impl->enlisted_beans, env);
+    if(size > 0)
+        return AXIS2_TRUE;
+    else
+        return AXIS2_FALSE;
 }
 
-axis2_status_t AXIS2_CALL
-sandesha2_transaction_rollback(
-        sandesha2_transaction_t *transaction,
-        const axis2_env_t *env)
+static void
+sandesha2_inmemory_transaction_commit(
+    sandesha2_transaction_t *trans,
+    const axis2_env_t *env)
 {
-    return AXIS2_SUCCESS;
+    sandesha2_inmemory_transaction_release_locks(trans, env);
 }
 
+static void
+sandesha2_inmemory_transaction_rollback(
+    sandesha2_transaction_t *trans,
+    const axis2_env_t *env)
+{
+    sandesha2_inmemory_transaction_release_locks(trans, env);
+}
+
+static void 
+sandesha2_inmemory_transaction_release_locks(
+    sandesha2_transaction_t *trans,
+    const axis2_env_t *env)
+{
+    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 = (sandesha2_rm_bean_t *) 
+            AXIS2_ARRAY_LIST_GET(trans_impl->enlisted_beans, env, i);
+        axis2_thread_mutex_lock(trans_impl->mutex);
+        sandesha2_rm_bean_set_transaction(rm_bean, env, NULL);
+        axis2_thread_mutex_unlock(trans_impl->mutex);
+    }
+    AXIS2_ARRAY_LIST_FREE(trans_impl->enlisted_beans, env);
+    trans_impl->enlisted_beans = NULL;
+}
+   
+static void
+sandesha2_inmemory_transaction_enlist(
+    sandesha2_transaction_t *trans,
+    const axis2_env_t *env,
+    sandesha2_rm_bean_t *rm_bean)
+{
+    sandesha2_inmemory_transaction_impl_t *trans_impl = NULL;
+    trans_impl = SANDESHA2_INTF_TO_IMPL(trans);
+    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)
+        {
+            int size = 0;
+            if(trans_impl->enlisted_beans)
+                size = AXIS2_ARRAY_LIST_SIZE(trans_impl->enlisted_beans, env);
+            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);
+        }
+        if(!other)
+        {
+            sandesha2_rm_bean_set_transaction(rm_bean, env, trans);
+            AXIS2_ARRAY_LIST_ADD(trans_impl->enlisted_beans, env, rm_bean);
+        }   
+        axis2_thread_mutex_unlock(trans_impl->mutex);
+    }    
+}
 

Added: 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=auto&rev=483051
==============================================================================
--- webservices/sandesha/trunk/c/src/storage/storage_mgr.c (added)
+++ webservices/sandesha/trunk/c/src/storage/storage_mgr.c Wed Dec  6 04:27:54 2006
@@ -0,0 +1,202 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ 
+#include <sandesha2_storage_mgr.h>
+#include <sandesha2_create_seq_mgr.h>
+#include <sandesha2_invoker_mgr.h>
+#include <sandesha2_next_msg_mgr.h>
+#include <sandesha2_sender_mgr.h>
+#include <sandesha2_seq_property_mgr.h>
+#include <sandesha2_transaction.h>
+#include <sandesha2_constants.h>
+#include <sandesha2_error.h>
+#include <sandesha2_utils.h>
+#include <sandesha2_rm_bean.h>
+#include <axis2_log.h>
+#include <axis2_hash.h>
+#include <axis2_thread.h>
+#include <axis2_property.h>
+#include <axis2_msg_ctx.h>
+#include <axis2_uuid_gen.h>
+#include <axis2_conf_ctx.h>
+
+axis2_status_t AXIS2_CALL
+sandesha2_storage_mgr_free_void_arg(
+    void *storage_mgr,
+    const axis2_env_t *env)
+{
+     return ((sandesha2_storage_mgr_t *) storage_mgr)->ops->free_void_arg(
+         storage_mgr, env);
+}
+
+axis2_status_t AXIS2_CALL
+sandesha2_storage_mgr_free(
+    sandesha2_storage_mgr_t *storage_mgr,
+    const axis2_env_t *env)
+{
+     return storage_mgr->ops->free(storage_mgr, env);
+}
+
+sandesha2_transaction_t *AXIS2_CALL
+sandesha2_storage_mgr_get_transaction(
+    sandesha2_storage_mgr_t *storage_mgr,
+    const axis2_env_t *env)
+{
+     return storage_mgr->ops->get_transaction(storage_mgr, env);
+}
+
+void AXIS2_CALL
+sandesha2_storage_mgr_enlist_bean(
+    sandesha2_storage_mgr_t *storage_mgr,
+    const axis2_env_t *env,
+    sandesha2_rm_bean_t *rm_bean)
+{
+     return storage_mgr->ops->enlist_bean(storage_mgr, env, rm_bean); 
+}
+
+sandesha2_create_seq_mgr_t *AXIS2_CALL
+sandesha2_storage_mgr_get_create_seq_mgr(
+    sandesha2_storage_mgr_t *storage_mgr,
+    const axis2_env_t *env)
+{
+     return storage_mgr->ops->get_create_seq_mgr(storage_mgr, env);
+}
+
+sandesha2_next_msg_mgr_t *AXIS2_CALL
+sandesha2_storage_mgr_get_next_msg_mgr(
+    sandesha2_storage_mgr_t *storage_mgr,
+    const axis2_env_t *env)
+{
+     return storage_mgr->ops->get_next_msg_mgr(storage_mgr, env);
+}
+
+sandesha2_sender_mgr_t *AXIS2_CALL
+sandesha2_storage_mgr_get_retrans_mgr(
+    sandesha2_storage_mgr_t *storage_mgr,
+    const axis2_env_t *env)
+{
+     return storage_mgr->ops->get_retrans_mgr(storage_mgr, env);
+}
+
+sandesha2_seq_property_mgr_t *AXIS2_CALL
+sandesha2_storage_mgr_get_seq_property_mgr(
+    sandesha2_storage_mgr_t *storage_mgr,
+    const axis2_env_t *env)
+{
+     return storage_mgr->ops->get_seq_property_mgr(storage_mgr, env);
+}
+
+sandesha2_invoker_mgr_t *AXIS2_CALL
+sandesha2_storage_mgr_get_storage_map_mgr(
+    sandesha2_storage_mgr_t *storage_mgr,
+    const axis2_env_t *env)
+{
+     return storage_mgr->ops->get_storage_map_mgr(storage_mgr, env);
+}
+
+axis2_status_t AXIS2_CALL
+sandesha2_storage_mgr_set_ctx(
+    sandesha2_storage_mgr_t *storage_mgr,
+    const axis2_env_t *env,
+    axis2_conf_ctx_t *conf_ctx)
+{
+     return storage_mgr->ops->set_ctx(storage_mgr, env, conf_ctx);
+}
+
+axis2_conf_ctx_t *AXIS2_CALL
+sandesha2_storage_mgr_get_ctx(
+    sandesha2_storage_mgr_t *storage_mgr,
+    const axis2_env_t *env)
+{
+     return storage_mgr->ops->get_ctx(storage_mgr, env);
+}
+
+axis2_status_t AXIS2_CALL
+sandesha2_storage_mgr_init(
+    sandesha2_storage_mgr_t *storage_mgr,
+    const axis2_env_t *env,
+    axis2_conf_ctx_t *conf_ctx)
+{
+     return storage_mgr->ops->init(storage_mgr, env, conf_ctx);
+}
+
+axis2_msg_ctx_t *AXIS2_CALL
+sandesha2_storage_mgr_retrieve_msg_ctx(
+    sandesha2_storage_mgr_t *storage_mgr,
+    const axis2_env_t *env,
+    axis2_char_t *key,
+    axis2_conf_ctx_t *conf_ctx)
+{
+     return storage_mgr->ops->retrieve_msg_ctx(storage_mgr, env, key, conf_ctx);
+}
+		
+axis2_status_t AXIS2_CALL
+sandesha2_storage_mgr_store_msg_ctx(
+    sandesha2_storage_mgr_t *storage_mgr,
+    const axis2_env_t *env,
+    axis2_char_t *key,
+    axis2_msg_ctx_t *msg_ctx)
+{
+     return storage_mgr->ops->store_msg_ctx(storage_mgr, env, key, msg_ctx);
+}
+			
+axis2_status_t AXIS2_CALL
+sandesha2_storage_mgr_update_msg_ctx(
+    sandesha2_storage_mgr_t *storage_mgr,
+    const axis2_env_t *env,
+    axis2_char_t *key,
+    axis2_msg_ctx_t *msg_ctx)
+{
+     return storage_mgr->ops->update_msg_ctx(storage_mgr, env, key, msg_ctx);
+}
+
+axis2_status_t AXIS2_CALL
+sandesha2_storage_mgr_remove_msg_ctx(
+    sandesha2_storage_mgr_t *storage_mgr,
+    const axis2_env_t *env,
+    axis2_char_t *key)
+{
+     return storage_mgr->ops->remove_msg_ctx(storage_mgr, env, key);
+}
+
+axis2_status_t AXIS2_CALL
+sandesha2_storage_mgr_init_storage(
+    sandesha2_storage_mgr_t *storage_mgr,
+    const axis2_env_t *env,
+    axis2_module_desc_t *module_desc)
+{
+     return storage_mgr->ops->init_storage(storage_mgr, env, module_desc);
+}
+
+axiom_soap_envelope_t *AXIS2_CALL
+sandesha2_storage_mgr_retrieve_soap_envelope(
+    sandesha2_storage_mgr_t *storage_mgr,
+    const axis2_env_t *env,
+    axis2_char_t *key)
+{
+     return storage_mgr->ops->retrieve_soap_envelope(storage_mgr, env, key); 
+}
+
+axis2_status_t AXIS2_CALL
+sandesha2_storage_mgr_store_soap_envelope(
+    sandesha2_storage_mgr_t *storage_mgr,
+    const axis2_env_t *env,
+    axiom_soap_envelope_t *soap_env,
+    axis2_char_t *key)
+{
+     return storage_mgr->ops->store_soap_envelope(storage_mgr, env, soap_env, key);
+}
+

Added: webservices/sandesha/trunk/c/src/storage/transaction.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/storage/transaction.c?view=auto&rev=483051
==============================================================================
--- webservices/sandesha/trunk/c/src/storage/transaction.c (added)
+++ webservices/sandesha/trunk/c/src/storage/transaction.c Wed Dec  6 04:27:54 2006
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ 
+#include <sandesha2_transaction.h>
+#include <sandesha2_constants.h>
+#include <sandesha2_error.h>
+#include <sandesha2_rm_bean.h>
+#include <sandesha2_storage_mgr.h>
+#include <axis2_log.h>
+#include <axis2_hash.h>
+#include <axis2_thread.h>
+#include <axis2_property.h>
+#include <platforms/axis2_platform_auto_sense.h>
+
+axis2_status_t AXIS2_CALL 
+sandesha2_transaction_free(
+    sandesha2_transaction_t *trans,
+    const axis2_env_t *env)
+{
+    return trans->ops->free (trans, env);
+}
+
+axis2_bool_t AXIS2_CALL
+sandesha2_transaction_is_active(
+    sandesha2_transaction_t *trans,
+    const axis2_env_t *env)
+{
+    return trans->ops->is_active(trans, env);
+}
+
+void AXIS2_CALL
+sandesha2_transaction_commit(
+    sandesha2_transaction_t *trans,
+    const axis2_env_t *env)
+{
+    trans->ops->commit(trans, env);
+}
+
+void AXIS2_CALL
+sandesha2_transaction_rollback(
+    sandesha2_transaction_t *trans,
+    const axis2_env_t *env)
+{
+    trans->ops->rollback(trans, env);
+}
+
+void AXIS2_CALL
+sandesha2_transaction_enlist(
+    sandesha2_transaction_t *trans,
+    const axis2_env_t *env,
+    sandesha2_rm_bean_t *rm_bean)
+{
+    trans->ops->rollback(trans, env);
+}
+



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