You are viewing a plain text version of this content. The canonical link for it is here.
Posted to sandesha-dev@ws.apache.org by sa...@apache.org on 2006/07/20 02:39:41 UTC

svn commit: r423684 - in /webservices/sandesha/trunk/c: include/sandesha2_rm_elements.h src/util/Makefile.am src/util/seq_mgr.c src/util/terminate_mgr.c src/wsrm/Makefile.am src/wsrm/rm_elements.c

Author: sahan
Date: Wed Jul 19 17:39:39 2006
New Revision: 423684

URL: http://svn.apache.org/viewvc?rev=423684&view=rev
Log:
Adding rm_elements
Finishing terminate_mgr

Added:
    webservices/sandesha/trunk/c/src/wsrm/rm_elements.c
Modified:
    webservices/sandesha/trunk/c/include/sandesha2_rm_elements.h
    webservices/sandesha/trunk/c/src/util/Makefile.am
    webservices/sandesha/trunk/c/src/util/seq_mgr.c
    webservices/sandesha/trunk/c/src/util/terminate_mgr.c
    webservices/sandesha/trunk/c/src/wsrm/Makefile.am

Modified: webservices/sandesha/trunk/c/include/sandesha2_rm_elements.h
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/include/sandesha2_rm_elements.h?rev=423684&r1=423683&r2=423684&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/include/sandesha2_rm_elements.h (original)
+++ webservices/sandesha/trunk/c/include/sandesha2_rm_elements.h Wed Jul 19 17:39:39 2006
@@ -25,7 +25,13 @@
 #include <axis2_utils_defines.h>
 #include <axis2_env.h>
 #include <sandesha2/sandesha2_create_seq.h>
+#include <sandesha2/sandesha2_create_seq_res.h>
+#include <sandesha2/sandesha2_terminate_seq.h>
+#include <sandesha2/sandesha2_terminate_seq_res.h>
+#include <sandesha2/sandesha2_close_seq.h>
+#include <sandesha2/sandesha2_close_seq_res.h>
 #include <sandesha2/sandesha2_seq_ack.h>
+#include <sandesha2/sandesha2_ack_requested.h>
 #include <sandesha2/sandesha2_seq.h>
 #include <sandesha2/sandesha2_identifier.h>
 #include <sandesha2/sandesha2_msg_number.h>
@@ -86,16 +92,16 @@
             const axis2_env_t *env,
             sandesha2_create_seq_res_t *create_seq_res);
             
-    sandesha2_sequence_t* (AXIS2_CALL *
-        get_sequence) 
+    sandesha2_seq_t* (AXIS2_CALL *
+        get_seq) 
             (sandesha2_rm_elements_t *rm_elements,
             const axis2_env_t *env);
             
     axis2_status_t (AXIS2_CALL *
-        set_sequence) 
+        set_seq) 
             (sandesha2_rm_elements_t *rm_elements,
             const axis2_env_t *env,
-            sandesha2_sequence_t *seq);
+            sandesha2_seq_t *seq);
             
     sandesha2_seq_ack_t* (AXIS2_CALL *
         get_seq_ack) 
@@ -210,10 +216,10 @@
 #define SANDESHA2_RM_ELEMENTS_SET_CREATE_SEQ_RES(rm_elements, env, element) \
     ((rm_elements)->ops->set_create_seq_res (rm_elements, env, element))
     
-#define SANDESHA2_RM_ELEMENTS_GET_SEQUENCE(rm_elements, env) \
+#define SANDESHA2_RM_ELEMENTS_GET_SEQ(rm_elements, env) \
     ((rm_elements)->ops->get_sequence (rm_elements, env))
     
-#define SANDESHA2_RM_ELEMENTS_SET_SEQUENCE(rm_elements, env, element) \
+#define SANDESHA2_RM_ELEMENTS_SET_SEQ(rm_elements, env, element) \
     ((rm_elements)->ops->set_sequence (rm_elements, env, element))
     
 #define SANDESHA2_RM_ELEMENTS_GET_SEQ_ACK(rm_elements, env) \

Modified: webservices/sandesha/trunk/c/src/util/Makefile.am
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/util/Makefile.am?rev=423684&r1=423683&r2=423684&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/src/util/Makefile.am (original)
+++ webservices/sandesha/trunk/c/src/util/Makefile.am Wed Jul 19 17:39:39 2006
@@ -8,7 +8,6 @@
                             fault_mgr.c\
                             ack_mgr.c \
 							seq_mgr.c \
-							msg_creator.c \
                             terminate_mgr.c
 
 INCLUDES = -I$(top_builddir)/include \

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?rev=423684&r1=423683&r2=423684&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/src/util/seq_mgr.c (original)
+++ webservices/sandesha/trunk/c/src/util/seq_mgr.c Wed Jul 19 17:39:39 2006
@@ -204,7 +204,7 @@
                 SANDESHA2_SEQ_PROP_LAST_ACTIVATED_TIME);
     }
     current_time = sandesha2_utils_get_current_time_in_millis(env);
-    sprintf(current_time_str, "%l", current_time);
+    sprintf(current_time_str, "%ld", current_time);
     SANDESHA2_LAST_ACTIVATED_BEAN_SET_VALUE(last_activated_bean, env, current_time_str); 
     if(AXIS2_TRUE == added)
     {

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?rev=423684&r1=423683&r2=423684&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/src/util/terminate_mgr.c (original)
+++ webservices/sandesha/trunk/c/src/util/terminate_mgr.c Wed Jul 19 17:39:39 2006
@@ -26,35 +26,105 @@
 #include <axis2_addr.h>
 #include <axis2_property.h>
 #include <axis2_array_list.h>
+#include <axis2_engine.h>
+
+axis2_hash_t *sandesha2_terminate_mgr_rcv_side_clean_map = NULL;
 
 AXIS2_EXTERN axis2_status_t AXIS2_CALL
-sandesha2_clean_recv_side_after_terminate_msg(
+sandesha2_terminate_mgr_clean_recv_side_after_terminate_msg(
                         const axis2_env_t *env,
                         axis2_conf_ctx_t *conf_ctx,
                         axis2_char_t *seq_id,
                         sandesha2_storage_mgr_t *storage_man)
 {
+    axis2_bool_t in_order_invoke = AXIS2_FALSE;
+    sandesha2_property_bean_t *prop_bean = NULL;
+    axis2_char_t *clean_status = NULL;
+    
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, conf_ctx, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, seq_id, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, storage_man, AXIS2_FAILURE);
     
-    
+    if(NULL == sandesha2_terminate_mgr_rcv_side_clean_map)
+    {
+        sandesha2_terminate_mgr_rcv_side_clean_map = axis2_hash_make(env);
+    }
+    
+    prop_bean = sandesha2_utils_get_property_bean(env, AXIS2_CONF_CTX_GET_CONF(
+                    conf_ctx, env));
+    in_order_invoke = SANDESHA2_PROPERTY_BEAN_IS_IN_ORDER(prop_bean, env);
+    if(AXIS2_FALSE == in_order_invoke)
+        sandesha2_terminate_mgr_clean_recv_side_after_invocation(env, conf_ctx,
+                    seq_id, storage_man);
+    clean_status = axis2_hash_get(sandesha2_terminate_mgr_rcv_side_clean_map,
+                    seq_id, AXIS2_HASH_KEY_STRING);
+    if(NULL != clean_status && 0 == AXIS2_STRCMP(clean_status, 
+                    SANDESHA2_CLEANED_AFTER_INVOCATION))
+        sandesha2_terminate_mgr_complete_term_on_recv_side(env, conf_ctx, seq_id,
+                    storage_man);
+    else
+        axis2_hash_set(sandesha2_terminate_mgr_rcv_side_clean_map, seq_id,
+                    AXIS2_HASH_KEY_STRING, AXIS2_STRDUP(
+                    SANDESHA2_CLEANED_ON_TERMINATE_MSG, env));
     return AXIS2_SUCCESS;
 }
 
 AXIS2_EXTERN axis2_status_t AXIS2_CALL
-sandesha2_clean_recv_side_after_invocation(
+sandesha2_terminate_mgr_clean_recv_side_after_invocation(
                         const axis2_env_t *env,
                         axis2_conf_ctx_t *conf_ctx,
                         axis2_char_t *seq_id,
                         sandesha2_storage_mgr_t *storage_man)
 {
+     sandesha2_invoker_mgr_t *invoker_mgr = NULL;
+    sandesha2_invoker_bean_t *find_bean = NULL;
+    axis2_array_list_t *found_list = NULL;
+    int i = 0;
+    axis2_char_t *clean_status = NULL;
+    
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, conf_ctx, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, seq_id, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, storage_man, AXIS2_FAILURE);
     
+    if(NULL == sandesha2_terminate_mgr_rcv_side_clean_map)
+    {
+        sandesha2_terminate_mgr_rcv_side_clean_map = axis2_hash_make(env);
+    }
+    
+    invoker_mgr = SANDESHA2_STORAGE_MGR_GET_STORAGE_MAP_MGR(storage_man, env);
+    find_bean = sandesha2_invoker_bean_create(env);
+    
+    SANDESHA2_INVOKER_BEAN_SET_SEQ_ID(find_bean, env, seq_id);
+    SANDESHA2_INVOKER_BEAN_SET_INVOKER(find_bean, env, AXIS2_TRUE);
+    
+    found_list = SANDESHA2_INVOKER_MGR_FIND(invoker_mgr, env, find_bean);
+    for(i = 0; i < AXIS2_ARRAY_LIST_SIZE(found_list, env); i++)
+    {
+        sandesha2_invoker_bean_t *map_bean = NULL;
+        axis2_char_t *msg_store_key = NULL;
+        
+        map_bean = AXIS2_ARRAY_LIST_GET(found_list, env, i);
+        msg_store_key = SANDESHA2_INVOKER_BEAN_GET_MSG_CONTEXT_REF_KEY(map_bean, 
+                        env);
+        SANDESHA2_STORAGE_MGR_REMOVE_MSG_CTX(storage_man, env, msg_store_key);
+        SANDESHA2_INVOKER_MGR_REMOVE(invoker_mgr, env, 
+                        SANDESHA2_INVOKER_BEAN_GET_MSG_CONTEXT_REF_KEY(map_bean, 
+                        env));
+    }
+    clean_status = axis2_hash_get(sandesha2_terminate_mgr_rcv_side_clean_map,
+                    seq_id, AXIS2_HASH_KEY_STRING);
+                    
+    if(NULL != clean_status && 0 == AXIS2_STRCMP(clean_status, 
+                    SANDESHA2_CLEANED_ON_TERMINATE_MSG))
+        sandesha2_terminate_mgr_complete_term_on_recv_side(env, conf_ctx, seq_id,
+                    storage_man);
+    else
+        axis2_hash_set(sandesha2_terminate_mgr_rcv_side_clean_map, seq_id,
+                    AXIS2_HASH_KEY_STRING, AXIS2_STRDUP(
+                    SANDESHA2_CLEANED_AFTER_INVOCATION, env));
+
     
     return AXIS2_SUCCESS;
 }
@@ -66,12 +136,30 @@
                         axis2_char_t *seq_id,
                         sandesha2_storage_mgr_t *storage_man)
 {
+    sandesha2_next_msg_mgr_t *next_mgr = NULL;
+    sandesha2_next_msg_bean_t *find_bean = NULL;
+    axis2_array_list_t *found_list = NULL;
+    axis2_char_t *highest_in_msg_key = NULL;
+    
+    
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, conf_ctx, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, seq_id, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, storage_man, AXIS2_FAILURE);
     
-    
+    next_mgr = SANDESHA2_STORAGE_MGR_GET_NEXT_MSG_MGR(storage_man, env);
+    find_bean = sandesha2_next_msg_bean_create(env);
+    SANDESHA2_NEXT_MSG_BEAN_SET_SEQ_ID(find_bean, env, seq_id);
+    
+    found_list = SANDESHA2_NEXT_MSG_MGR_FIND(next_mgr, env, find_bean);
+    
+    highest_in_msg_key = sandesha2_utils_get_seq_property(env, seq_id,
+                        SANDESHA2_SEQ_PROP_HIGHEST_IN_MSG_KEY, storage_man);
+    if(NULL != highest_in_msg_key)
+        SANDESHA2_STORAGE_MGR_REMOVE_MSG_CTX(storage_man, env, 
+                        highest_in_msg_key);
+    sandesha2_terminate_mgr_remove_recv_side_propertis(env, conf_ctx, seq_id,
+                        storage_man);
     return AXIS2_SUCCESS;
 }
                         
@@ -82,11 +170,44 @@
                         axis2_char_t *seq_id,
                         sandesha2_storage_mgr_t *storage_man)
 {
+    sandesha2_seq_property_mgr_t *seq_prop_mgr = NULL;
+    sandesha2_seq_property_bean_t *all_seq_bean = NULL;
+    
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, conf_ctx, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, seq_id, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, storage_man, AXIS2_FAILURE);
     
+    seq_prop_mgr = SANDESHA2_STORAGE_MGR_GET_SEQ_PROPERTY_MGR(storage_man, env);
+    all_seq_bean = SANDESHA2_SEQ_PROPERTY_MGR_RETRIEVE(seq_prop_mgr, env, 
+                        SANDESHA2_SEQ_PROP_ALL_SEQS, 
+                        SANDESHA2_SEQ_PROP_INCOMING_SEQ_LIST);
+    if(NULL != all_seq_bean)
+    {
+        axis2_array_list_t *all_seq_list = NULL;
+        axis2_char_t *all_seq_str = NULL;
+        
+        all_seq_list = sandesha2_utils_get_array_list_from_string(env, 
+                        SANDESHA2_SEQ_PROPERTY_BEAN_GET_VALUE(all_seq_bean, 
+                        env));
+        if(NULL != all_seq_list)
+        {
+            int i = 0;
+            for(i = 0; i < AXIS2_ARRAY_LIST_SIZE(all_seq_list, env); i++)
+            {
+                axis2_char_t *value = AXIS2_ARRAY_LIST_GET(all_seq_list, env, i);
+                if(0 == AXIS2_STRCMP(value, seq_id))
+                {
+                    AXIS2_ARRAY_LIST_REMOVE(all_seq_list, env, i);
+                    break;
+                }
+            }
+            all_seq_str = sandesha2_utils_array_list_to_string(env, all_seq_list,
+                        SANDESHA2_ARRAY_LIST_STRING);
+            SANDESHA2_SEQ_PROPERTY_BEAN_SET_VALUE(all_seq_bean, env, all_seq_str);
+            SANDESHA2_SEQ_PROPERTY_MGR_UPDATE(seq_prop_mgr, env, all_seq_bean);
+        }
+    }
     
     return AXIS2_SUCCESS;
 }
@@ -99,12 +220,21 @@
                         axis2_bool_t svr_side,
                         sandesha2_storage_mgr_t *storage_man)
 {
+    sandesha2_seq_property_mgr_t *seq_prop_mgr = NULL;
+    sandesha2_seq_property_bean_t *seq_term_bean = NULL;
+    
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, conf_ctx, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, seq_id, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, storage_man, AXIS2_FAILURE);
     
+    seq_prop_mgr = SANDESHA2_STORAGE_MGR_GET_SEQ_PROPERTY_MGR(storage_man, env);
+    seq_term_bean = sandesha2_seq_property_bean_create_with_data(env, seq_id,
+                        SANDESHA2_SEQ_PROP_SEQ_TERMINATED, SANDESHA2_VALUE_TRUE);
+    SANDESHA2_SEQ_PROPERTY_MGR_INSERT(seq_prop_mgr, env, seq_term_bean);
     
+    sandesha2_terminate_mgr_clean_sending_side_data(env, conf_ctx, seq_id, 
+                        svr_side, storage_man);
     return AXIS2_SUCCESS;
 }
 
@@ -115,12 +245,40 @@
                         sandesha2_seq_property_bean_t *prop_bean,
                         sandesha2_seq_property_mgr_t *prop_mgr)
 {
+    axis2_bool_t add_entry_with_seq_id = AXIS2_FALSE;
+    axis2_char_t *name = NULL;
+    
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, prop_bean, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, seq_id, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, prop_mgr, AXIS2_FAILURE);
     
-    
+    name = SANDESHA2_SEQ_PROPERTY_BEAN_GET_NAME(prop_bean, env);
+    if(NULL == name)
+        return AXIS2_FAILURE;
+    
+    if(0 == AXIS2_STRCMP(name, SANDESHA2_SEQ_PROP_CLIENT_COMPLETED_MESSAGES))
+        add_entry_with_seq_id = AXIS2_TRUE;
+    if(0 == AXIS2_STRCMP(name, SANDESHA2_SEQ_PROP_SEQ_TERMINATED))
+        add_entry_with_seq_id = AXIS2_TRUE;
+    if(0 == AXIS2_STRCMP(name, SANDESHA2_SEQ_PROP_SEQ_CLOSED))
+        add_entry_with_seq_id = AXIS2_TRUE;
+    if(0 == AXIS2_STRCMP(name, SANDESHA2_SEQ_PROP_SEQ_TIMED_OUT))
+        add_entry_with_seq_id = AXIS2_TRUE;
+        
+    if(AXIS2_TRUE == add_entry_with_seq_id && NULL != seq_id)
+    {
+        sandesha2_seq_property_bean_t *new_bean = NULL;
+        new_bean = sandesha2_seq_property_bean_create(env);
+        SANDESHA2_SEQ_PROPERTY_BEAN_SET_SEQ_ID(new_bean, env, seq_id);
+        SANDESHA2_SEQ_PROPERTY_BEAN_SET_NAME(new_bean, env, name);
+        SANDESHA2_SEQ_PROPERTY_BEAN_SET_VALUE(new_bean, env, 
+                        SANDESHA2_SEQ_PROPERTY_BEAN_GET_VALUE(prop_bean, env));
+        SANDESHA2_SEQ_PROPERTY_MGR_INSERT(prop_mgr, env, new_bean);
+        SANDESHA2_SEQ_PROPERTY_MGR_REMOVE(prop_mgr, env, 
+                    SANDESHA2_SEQ_PROPERTY_BEAN_GET_SEQ_ID(prop_bean, env),
+                    name);
+    }
     return AXIS2_SUCCESS;
 }
 
@@ -129,11 +287,25 @@
                         const axis2_env_t *env,
                         axis2_char_t *name)
 {
+    axis2_bool_t deletable = AXIS2_TRUE;
+    
     AXIS2_ENV_CHECK(env, AXIS2_FALSE);
     AXIS2_PARAM_CHECK(env->error, name, AXIS2_FALSE);
         
-    
-    return AXIS2_TRUE;
+    if(0 == AXIS2_STRCMP(name, SANDESHA2_SEQ_PROP_TERMINATE_ADDED))
+        deletable = AXIS2_FALSE;
+    if(0 == AXIS2_STRCMP(name, SANDESHA2_SEQ_PROP_NO_OF_OUTGOING_MSGS_ACKED))
+        deletable = AXIS2_FALSE;
+    if(0 == AXIS2_STRCMP(name, SANDESHA2_SEQ_PROP_INTERNAL_SEQ_ID))
+        deletable = AXIS2_FALSE;
+    if(0 == AXIS2_STRCMP(name, SANDESHA2_SEQ_PROP_SEQ_TERMINATED))
+        deletable = AXIS2_FALSE;
+    if(0 == AXIS2_STRCMP(name, SANDESHA2_SEQ_PROP_SEQ_CLOSED))
+        deletable = AXIS2_FALSE;
+    if(0 == AXIS2_STRCMP(name, SANDESHA2_SEQ_PROP_SEQ_TIMED_OUT))
+        deletable = AXIS2_FALSE;
+        
+    return deletable;
 }
 
 AXIS2_EXTERN axis2_status_t AXIS2_CALL
@@ -144,12 +316,21 @@
                         axis2_bool_t svr_side,
                         sandesha2_storage_mgr_t *storage_man)
 {
+    sandesha2_seq_property_mgr_t *seq_prop_mgr = NULL;
+    sandesha2_seq_property_bean_t *seq_term_bean = NULL;
+    
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, conf_ctx, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, seq_id, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, storage_man, AXIS2_FAILURE);
     
-    
+    seq_prop_mgr = SANDESHA2_STORAGE_MGR_GET_SEQ_PROPERTY_MGR(storage_man, env);
+    seq_term_bean = sandesha2_seq_property_bean_create_with_data(env, seq_id,
+                        SANDESHA2_SEQ_PROP_SEQ_TIMED_OUT, SANDESHA2_VALUE_TRUE);
+    
+    SANDESHA2_SEQ_PROPERTY_MGR_INSERT(seq_prop_mgr, env, seq_term_bean);
+    sandesha2_terminate_mgr_clean_sending_side_data(env, conf_ctx, seq_id,
+                        svr_side, storage_man);
     return AXIS2_SUCCESS;
 }
 
@@ -161,12 +342,107 @@
                         axis2_bool_t svr_side,
                         sandesha2_storage_mgr_t *storage_man)
 {
+    sandesha2_seq_property_mgr_t *seq_prop_mgr = NULL;
+    sandesha2_sender_mgr_t *retrans_mgr = NULL;
+    sandesha2_create_seq_mgr_t *create_seq_mgr = NULL;
+    axis2_char_t *out_seq_id = NULL;
+    axis2_array_list_t *found_list = NULL;
+    sandesha2_create_seq_bean_t *find_create_seq_bean = NULL;
+    sandesha2_seq_property_bean_t *find_seq_prop_bean = NULL;
+    
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, conf_ctx, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, seq_id, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, storage_man, AXIS2_FAILURE);
     
-    
+    seq_prop_mgr = SANDESHA2_STORAGE_MGR_GET_SEQ_PROPERTY_MGR(storage_man, env);
+    retrans_mgr = SANDESHA2_STORAGE_MGR_GET_RETRANS_MGR(storage_man, env);    
+    create_seq_mgr = SANDESHA2_STORAGE_MGR_GET_CREATE_SEQ_MGR(storage_man, env);
+    
+    out_seq_id = sandesha2_utils_get_seq_property(env, seq_id, 
+                        SANDESHA2_SEQ_PROP_OUT_SEQ_ID, storage_man);
+    if(AXIS2_TRUE == svr_side)
+    {
+        sandesha2_seq_property_bean_t *acks_to_bean = NULL;
+        axis2_char_t *addr_ns_uri = NULL;
+        axis2_char_t *anon_uri = NULL;
+        axis2_bool_t stop_listner_for_async = AXIS2_FALSE;
+        
+        acks_to_bean = SANDESHA2_SEQ_PROPERTY_MGR_RETRIEVE(seq_prop_mgr, env,
+                        seq_id, SANDESHA2_SEQ_PROP_ACKS_TO_EPR);
+        addr_ns_uri = sandesha2_utils_get_seq_property(env, seq_id, 
+                        SANDESHA2_SEQ_PROP_ADDRESSING_NAMESPACE_VALUE, 
+                        storage_man);
+        anon_uri = sandesha2_spec_specific_consts_get_anon_uri(env, addr_ns_uri);
+        if(NULL != acks_to_bean)
+        {
+            axis2_char_t *acks_to = NULL;
+            acks_to = SANDESHA2_SEQ_PROPERTY_BEAN_GET_VALUE(acks_to_bean, env);
+            if(NULL != acks_to && 0 == AXIS2_STRCMP(acks_to, anon_uri))
+                stop_listner_for_async = AXIS2_TRUE;
+        }
+        
+    }
+    found_list = SANDESHA2_SENDER_MGR_FIND_BY_INTERNAL_SEQ_ID(retrans_mgr, env,
+                        seq_id);
+    if(NULL != found_list)
+    {
+        int i = 0;
+        for(i = 0; i < AXIS2_ARRAY_LIST_SIZE(found_list, env); i++)
+        {
+            sandesha2_sender_bean_t *retrans_bean = NULL;
+            axis2_char_t *msg_store_key = NULL;
+            
+            retrans_bean = AXIS2_ARRAY_LIST_GET(found_list, env, i);
+            msg_store_key = SANDESHA2_SENDER_BEAN_GET_MSG_CONTEXT_REF_KEY(
+                        retrans_bean, env);
+            SANDESHA2_STORAGE_MGR_REMOVE_MSG_CTX(storage_man, env, msg_store_key);
+        }
+    }
+    
+    find_create_seq_bean = sandesha2_create_seq_bean_create(env);
+    SANDESHA2_CREATE_SEQ_BEAN_SET_INTERNAL_SEQ_ID(find_create_seq_bean, env,
+                        seq_id);
+    found_list = SANDESHA2_CREATE_SEQ_MGR_FIND(create_seq_mgr, env, 
+                        find_create_seq_bean);
+    if(NULL != found_list)
+    {
+        int i = 0;
+        for(i = 0; i < AXIS2_ARRAY_LIST_SIZE(found_list, env); i++)
+        {
+            sandesha2_create_seq_bean_t *create_seq_bean = NULL;
+            
+            create_seq_bean = AXIS2_ARRAY_LIST_GET(found_list, env, i);
+            SANDESHA2_CREATE_SEQ_MGR_REMOVE(create_seq_mgr, env,
+                        SANDESHA2_CREATE_SEQ_BEAN_GET_CREATE_SEQ_MSG_ID(
+                        create_seq_bean, env));
+        }
+    }
+    
+    find_seq_prop_bean = sandesha2_seq_property_bean_create(env);
+    SANDESHA2_SEQ_PROPERTY_BEAN_SET_SEQ_ID(find_seq_prop_bean, env, seq_id);
+    found_list = SANDESHA2_SEQ_PROPERTY_MGR_FIND(seq_prop_mgr, env, 
+                        find_seq_prop_bean);
+    if(NULL != found_list)
+    {
+        int i = 0;
+        for(i = 0; i < AXIS2_ARRAY_LIST_SIZE(found_list, env); i++)
+        {
+            sandesha2_seq_property_bean_t *seq_prop_bean = NULL;
+            
+            seq_prop_bean = AXIS2_ARRAY_LIST_GET(found_list, env, i);
+            sandesha2_terminate_mgr_do_updates_if_needed(env, out_seq_id,
+                        seq_prop_bean, seq_prop_mgr);
+            if(AXIS2_TRUE == sandesha2_terminate_mgr_is_property_deletable(env,
+                        SANDESHA2_SEQ_PROPERTY_BEAN_GET_NAME(seq_prop_bean, env)))
+            {
+                SANDESHA2_SEQ_PROPERTY_MGR_REMOVE(seq_prop_mgr, env,
+                        SANDESHA2_SEQ_PROPERTY_BEAN_GET_SEQ_ID(seq_prop_bean, 
+                        env), SANDESHA2_SEQ_PROPERTY_BEAN_GET_NAME(
+                        seq_prop_bean, env));
+            }
+        }
+    }
     return AXIS2_SUCCESS;
 }
 
@@ -178,11 +454,153 @@
                         axis2_char_t *int_seq_id,
                         sandesha2_storage_mgr_t *storage_man)
 {
+    axis2_msg_ctx_t *msg_ctx = NULL;
+    axis2_conf_ctx_t *conf_ctx = NULL;
+    sandesha2_seq_property_mgr_t *seq_prop_mgr = NULL;
+    sandesha2_seq_property_bean_t *terminated = NULL;
+    sandesha2_msg_ctx_t *terminate_rm_msg = NULL;
+    axis2_property_t *property = NULL;
+    axis2_endpoint_ref_t *to_epr = NULL;
+    sandesha2_seq_property_bean_t *to_bean = NULL;
+    axis2_char_t *rm_ver = NULL;
+    sandesha2_seq_property_bean_t *transport_to_bean = NULL;
+    axis2_char_t *key = NULL;
+    sandesha2_sender_bean_t *terminate_bean = NULL;
+    sandesha2_sender_mgr_t *retrans_mgr = NULL;
+    sandesha2_seq_property_bean_t *terminate_added = NULL;
+    axis2_transport_out_desc_t *transport_out = NULL;
+    axis2_msg_ctx_t *msg_ctx1 = NULL;
+    axis2_engine_t *engine = NULL;
+    
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, rm_msg_ctx, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, out_seq_id, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, int_seq_id, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, storage_man, AXIS2_FAILURE);
     
-    return AXIS2_SUCCESS;
+    msg_ctx = SANDESHA2_MSG_CTX_GET_MSG_CTX(rm_msg_ctx, env);
+    conf_ctx = AXIS2_MSG_CTX_GET_CONF_CTX(msg_ctx, env);
+    
+    seq_prop_mgr = SANDESHA2_STORAGE_MGR_GET_SEQ_PROPERTY_MGR(storage_man, env);
+    terminated = SANDESHA2_SEQ_PROPERTY_MGR_RETRIEVE(seq_prop_mgr, env, 
+                        out_seq_id, SANDESHA2_SEQ_PROP_TERMINATE_ADDED);
+    if(NULL != terminated && NULL != SANDESHA2_SEQ_PROPERTY_BEAN_GET_VALUE(
+                        terminated, env) && 0 == AXIS2_STRCMP(
+                        SANDESHA2_VALUE_TRUE, 
+                        SANDESHA2_SEQ_PROPERTY_BEAN_GET_VALUE(terminated, env)))
+    {
+        AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[sandesha2] Terminate was"
+                        " added previously");
+    }
+    terminate_rm_msg = sandesha2_msg_creator_create_terminate_seq_msg(env,
+                        rm_msg_ctx, out_seq_id, int_seq_id, storage_man);
+    SANDESHA2_MSG_CTX_SET_FLOW(terminate_rm_msg, env, AXIS2_OUT_FLOW);
+    property = axis2_property_create(env);
+    AXIS2_PROPERTY_SET_SCOPE(property, env, AXIS2_SCOPE_REQUEST);
+    AXIS2_PROPERTY_SET_VALUE(property, env, AXIS2_STRDUP(SANDESHA2_VALUE_TRUE,
+                        env));
+    SANDESHA2_MSG_CTX_SET_PROPERTY(terminate_rm_msg, env, 
+                        SANDESHA2_APPLICATION_PROCESSING_DONE, property);
+    
+    to_bean = SANDESHA2_SEQ_PROPERTY_MGR_RETRIEVE(seq_prop_mgr, env, int_seq_id,
+                        SANDESHA2_SEQ_PROP_TO_EPR);
+    to_epr = axis2_endpoint_ref_create(env, 
+                        SANDESHA2_SEQ_PROPERTY_BEAN_GET_VALUE(to_bean, env));
+    if(NULL == to_epr)
+    {
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[sandesha2] To EPR has an "
+                        "invalid value");
+        return AXIS2_FAILURE;
+    }
+    SANDESHA2_MSG_CTX_SET_TO(rm_msg_ctx, env, to_epr);
+    rm_ver = sandesha2_utils_get_rm_version(env, int_seq_id, storage_man);
+    if(NULL == rm_ver)
+    {
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[sandesha2] Cannot find the "
+                        "rm version for msg");
+        return AXIS2_FAILURE;
+    }
+    SANDESHA2_MSG_CTX_SET_WSA_ACTION(terminate_rm_msg, env, 
+                        sandesha2_spec_specific_consts_get_terminate_seq_action(
+                        env, rm_ver));
+    SANDESHA2_MSG_CTX_SET_SOAP_ACTION(terminate_rm_msg, env,
+                        sandesha2_spec_specific_consts_get_terminate_seq_soap_action
+                        (env, rm_ver));
+    transport_to_bean = SANDESHA2_SEQ_PROPERTY_MGR_RETRIEVE(seq_prop_mgr, env,
+                        int_seq_id, SANDESHA2_SEQ_PROP_TRANSPORT_TO);
+    if(NULL != transport_to_bean)
+    {
+        property = axis2_property_create(env);
+        AXIS2_PROPERTY_SET_SCOPE(property, env, AXIS2_SCOPE_REQUEST);
+        AXIS2_PROPERTY_SET_VALUE(property, env, AXIS2_STRDUP(
+                        SANDESHA2_SEQ_PROPERTY_BEAN_GET_VALUE(transport_to_bean,
+                        env), env));
+        SANDESHA2_MSG_CTX_SET_PROPERTY(terminate_rm_msg, env, 
+                            AXIS2_TRANSPORT_URL, property);
+    }
+    
+    SANDESHA2_MSG_CTX_ADD_SOAP_ENVELOPE(terminate_rm_msg, env);
+    
+    key = axis2_uuid_gen(env);
+    terminate_bean = sandesha2_sender_bean_create(env);
+    SANDESHA2_SENDER_BEAN_SET_MSG_CONTEXT_REF_KEY(terminate_bean, env, key);
+    SANDESHA2_STORAGE_MGR_STORE_MSG_CTX(storage_man, env, key, 
+                        SANDESHA2_MSG_CTX_GET_MSG_CTX(terminate_rm_msg, env));
+    SANDESHA2_SENDER_BEAN_SET_TIME_TO_SEND(terminate_bean, env,
+                        sandesha2_utils_get_current_time_in_millis(env) +
+                        SANDESHA2_TERMINATE_DELAY);
+    SANDESHA2_SENDER_BEAN_SET_MSG_ID(terminate_bean, env, 
+                        SANDESHA2_MSG_CTX_GET_MSG_ID(terminate_rm_msg, env));
+    SANDESHA2_SENDER_BEAN_SET_SEND(terminate_bean, env, AXIS2_TRUE);
+    
+    property = axis2_property_create(env);
+    AXIS2_PROPERTY_SET_SCOPE(property, env, AXIS2_SCOPE_REQUEST);
+    AXIS2_PROPERTY_SET_VALUE(property, env, AXIS2_STRDUP(SANDESHA2_VALUE_FALSE,
+                        env));
+    SANDESHA2_MSG_CTX_SET_PROPERTY(terminate_rm_msg, env, 
+                            SANDESHA2_QUALIFIED_FOR_SENDING, property);
+                            
+    SANDESHA2_SENDER_BEAN_SET_RESEND(terminate_bean, env, AXIS2_FALSE);
+    retrans_mgr = SANDESHA2_STORAGE_MGR_GET_RETRANS_MGR(storage_man, env);
+    
+    SANDESHA2_SENDER_MGR_INSERT(retrans_mgr, env, terminate_bean);
+    
+    terminate_added = sandesha2_seq_property_bean_create(env);
+    SANDESHA2_SEQ_PROPERTY_BEAN_SET_NAME(terminate_added, env, 
+                        SANDESHA2_SEQ_PROP_TERMINATE_ADDED);
+    SANDESHA2_SEQ_PROPERTY_BEAN_SET_SEQ_ID(terminate_added, env, out_seq_id);
+    SANDESHA2_SEQ_PROPERTY_BEAN_SET_VALUE(terminate_added, env, 
+                        SANDESHA2_VALUE_TRUE);
+                        
+    SANDESHA2_SEQ_PROPERTY_MGR_INSERT(seq_prop_mgr, env, terminate_added);
+    
+    msg_ctx1 = SANDESHA2_MSG_CTX_GET_MSG_CTX(terminate_rm_msg, env);
+    transport_out = AXIS2_MSG_CTX_GET_TRANSPORT_OUT_DESC(msg_ctx1, env);
+    
+    property = axis2_property_create(env);
+    AXIS2_PROPERTY_SET_SCOPE(property, env, AXIS2_SCOPE_REQUEST);
+    AXIS2_PROPERTY_SET_VALUE(property, env, transport_out);
+    AXIS2_MSG_CTX_SET_PROPERTY(msg_ctx1, env, 
+                        SANDESHA2_ORIGINAL_TRANSPORT_OUT_DESC, property,
+                        AXIS2_FALSE);
+    
+    property = axis2_property_create(env);
+    AXIS2_PROPERTY_SET_SCOPE(property, env, AXIS2_SCOPE_REQUEST);
+    AXIS2_PROPERTY_SET_VALUE(property, env, AXIS2_STRDUP(key, env));
+    AXIS2_MSG_CTX_SET_PROPERTY(msg_ctx1, env, SANDESHA2_MESSAGE_STORE_KEY, 
+                        property, AXIS2_FALSE);
+                        
+    property = axis2_property_create(env);
+    AXIS2_PROPERTY_SET_SCOPE(property, env, AXIS2_SCOPE_REQUEST);
+    AXIS2_PROPERTY_SET_VALUE(property, env, AXIS2_STRDUP(SANDESHA2_VALUE_TRUE, 
+                        env));
+    AXIS2_MSG_CTX_SET_PROPERTY(msg_ctx1, env, SANDESHA2_SET_SEND_TO_TRUE, 
+                        property, AXIS2_FALSE);
+                        
+    AXIS2_MSG_CTX_SET_TRANSPORT_OUT_DESC(msg_ctx1, env, 
+                        sandesha2_utils_get_transport_out(env));
+                        
+    engine = axis2_engine_create(env, conf_ctx);
+        
+    return AXIS2_ENGINE_SEND(engine, env, msg_ctx1);
 }

Modified: webservices/sandesha/trunk/c/src/wsrm/Makefile.am
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/wsrm/Makefile.am?rev=423684&r1=423683&r2=423684&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/src/wsrm/Makefile.am (original)
+++ webservices/sandesha/trunk/c/src/wsrm/Makefile.am Wed Jul 19 17:39:39 2006
@@ -23,7 +23,8 @@
                                create_seq_res.c\
                                seq_fault.c\
                                terminate_seq.c\
-                               terminate_seq_res.c
+                               terminate_seq_res.c\
+                               rm_elements.c
 
 INCLUDES = -I$(top_builddir)/include \
             @AXIS2INC@

Added: webservices/sandesha/trunk/c/src/wsrm/rm_elements.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/wsrm/rm_elements.c?rev=423684&view=auto
==============================================================================
--- webservices/sandesha/trunk/c/src/wsrm/rm_elements.c (added)
+++ webservices/sandesha/trunk/c/src/wsrm/rm_elements.c Wed Jul 19 17:39:39 2006
@@ -0,0 +1,484 @@
+/*
+ * 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_rm_elements.h>
+#include <sandesha2/sandesha2_constants.h>
+#include <axis2_hash.h>
+#include <axiom_soap_const.h>
+#include <sandesha2/sandesha2_iom_rm_part.h>
+#include <sandesha2/sandesha2_utils.h>
+#include <stdio.h>
+
+
+/** 
+ * @brief RM Elements struct impl
+ *	Sandesha2 RM Elements
+ */
+typedef struct sandesha2_rm_elements_impl sandesha2_rm_elements_impl_t;  
+  
+struct sandesha2_rm_elements_impl
+{
+    sandesha2_rm_elements_t elements;
+};
+
+#define SANDESHA2_INTF_TO_IMPL(elements) \
+                        ((sandesha2_rm_elements_impl_t *)(elements))
+
+/***************************** Function headers *******************************/
+axis2_status_t AXIS2_CALL 
+sandesha2_rm_elements_from_soap_envelope
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env,
+            axiom_soap_envelope_t *soap_envelope,
+            axis2_char_t *action);
+            
+axiom_soap_envelope_t* AXIS2_CALL 
+sandesha2_rm_elements_to_soap_envelope
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env,
+            axiom_soap_envelope_t *soap_envelope);
+            
+sandesha2_create_seq_t* AXIS2_CALL 
+sandesha2_rm_elements_get_create_seq 
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env);
+            
+axis2_status_t AXIS2_CALL 
+sandesha2_rm_elements_set_create_seq
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env,
+            sandesha2_create_seq_t *create_seq);
+    
+sandesha2_create_seq_res_t* AXIS2_CALL 
+sandesha2_rm_elements_get_create_seq_res
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env);
+            
+axis2_status_t AXIS2_CALL 
+sandesha2_rm_elements_set_create_seq_res
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env,
+            sandesha2_create_seq_res_t *create_seq_res);
+            
+sandesha2_seq_t* AXIS2_CALL 
+sandesha2_rm_elements_get_seq
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env);
+            
+axis2_status_t AXIS2_CALL 
+sandesha2_rm_elements_set_seq
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env,
+            sandesha2_seq_t *seq);
+            
+sandesha2_seq_ack_t* AXIS2_CALL 
+sandesha2_rm_elements_get_seq_ack
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env);
+            
+axis2_status_t AXIS2_CALL 
+sandesha2_rm_elements_set_seq_ack
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env,
+            sandesha2_seq_ack_t *seq_ack);
+            
+sandesha2_terminate_seq_t* AXIS2_CALL 
+sandesha2_rm_elements_get_terminate_seq
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env);
+            
+axis2_status_t AXIS2_CALL 
+sandesha2_rm_elements_set_terminate_seq
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env,
+            sandesha2_terminate_seq_t *terminate_seq);
+            
+sandesha2_terminate_seq_res_t* AXIS2_CALL 
+sandesha2_rm_elements_get_terminate_seq_res
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env);
+            
+axis2_status_t AXIS2_CALL 
+sandesha2_rm_elements_set_terminate_seq_res
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env,
+            sandesha2_terminate_seq_res_t *terminate_seq_res);
+            
+sandesha2_ack_requested_t* AXIS2_CALL 
+sandesha2_rm_elements_get_ack_reqested
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env);
+            
+axis2_status_t AXIS2_CALL 
+sandesha2_rm_elements_set_ack_reqested
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env,
+            sandesha2_ack_requested_t *ack_reqested);
+    
+sandesha2_close_seq_t* AXIS2_CALL 
+sandesha2_rm_elements_get_close_seq
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env);
+            
+axis2_status_t AXIS2_CALL 
+sandesha2_rm_elements_set_close_seq
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env,
+            sandesha2_close_seq_t *close_seq);
+    
+sandesha2_close_seq_res_t* AXIS2_CALL 
+sandesha2_rm_elements_get_close_seq_res
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env);
+            
+axis2_status_t AXIS2_CALL 
+sandesha2_rm_elements_set_close_seq_res
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env,
+            sandesha2_close_seq_res_t *close_seq_res);
+    
+axis2_char_t* AXIS2_CALL 
+sandesha2_rm_elements_get_addr_ns_val
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env);
+
+axis2_status_t AXIS2_CALL 
+sandesha2_rm_elements_free(sandesha2_rm_elements_t *mgr, 
+                        const axis2_env_t *env);								
+
+/***************************** End of function headers ************************/
+
+AXIS2_EXTERN sandesha2_rm_elements_t* AXIS2_CALL
+sandesha2_rm_elements_create(const axis2_env_t *env,
+                        axis2_char_t *addr_ns_uri)
+{
+    sandesha2_rm_elements_impl_t *rm_elements_impl = NULL;
+    AXIS2_ENV_CHECK(env, NULL);
+    
+    rm_elements_impl =  (sandesha2_rm_elements_impl_t *)AXIS2_MALLOC 
+                        (env->allocator, sizeof(sandesha2_rm_elements_impl_t));
+	
+    if(NULL == rm_elements_impl)
+	{
+		AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        return NULL;
+	}
+    
+    rm_elements_impl->elements.ops = AXIS2_MALLOC(env->allocator,
+                        sizeof(sandesha2_rm_elements_ops_t));
+    if(NULL == rm_elements_impl->elements.ops)
+	{
+		sandesha2_rm_elements_free((sandesha2_rm_elements_t*)rm_elements_impl, 
+                        env);
+        AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+        return NULL;
+	}
+    
+    rm_elements_impl->elements.ops->from_soap_envelope = 
+                        sandesha2_rm_elements_from_soap_envelope;
+    rm_elements_impl->elements.ops->to_soap_envelope = 
+                        sandesha2_rm_elements_to_soap_envelope;
+    rm_elements_impl->elements.ops->get_create_seq = 
+                        sandesha2_rm_elements_get_create_seq;
+    rm_elements_impl->elements.ops->set_create_seq = 
+                        sandesha2_rm_elements_set_create_seq;
+    rm_elements_impl->elements.ops->get_create_seq_res = 
+                        sandesha2_rm_elements_get_create_seq_res;
+    rm_elements_impl->elements.ops->set_create_seq_res = 
+                        sandesha2_rm_elements_set_create_seq_res;
+    rm_elements_impl->elements.ops->get_seq = 
+                        sandesha2_rm_elements_get_seq;
+    rm_elements_impl->elements.ops->set_seq = 
+                        sandesha2_rm_elements_set_seq;
+    rm_elements_impl->elements.ops->get_seq_ack = 
+                        sandesha2_rm_elements_get_seq_ack;
+    rm_elements_impl->elements.ops->set_seq_ack = 
+                        sandesha2_rm_elements_set_seq_ack;
+    rm_elements_impl->elements.ops->get_terminate_seq = 
+                        sandesha2_rm_elements_get_terminate_seq;
+    rm_elements_impl->elements.ops->set_terminate_seq = 
+                        sandesha2_rm_elements_set_terminate_seq;
+    rm_elements_impl->elements.ops->get_terminate_seq_res = 
+                        sandesha2_rm_elements_get_terminate_seq_res;
+    rm_elements_impl->elements.ops->set_terminate_seq_res = 
+                        sandesha2_rm_elements_set_terminate_seq_res;
+    rm_elements_impl->elements.ops->get_ack_reqested = 
+                        sandesha2_rm_elements_get_ack_reqested;
+    rm_elements_impl->elements.ops->set_ack_reqested = 
+                        sandesha2_rm_elements_set_ack_reqested;
+    rm_elements_impl->elements.ops->get_close_seq = 
+                        sandesha2_rm_elements_get_close_seq;
+    rm_elements_impl->elements.ops->set_close_seq = 
+                        sandesha2_rm_elements_set_close_seq;
+    rm_elements_impl->elements.ops->get_close_seq_res = 
+                        sandesha2_rm_elements_get_close_seq_res;
+    rm_elements_impl->elements.ops->set_close_seq_res = 
+                        sandesha2_rm_elements_set_close_seq_res;
+    rm_elements_impl->elements.ops->get_addr_ns_val = 
+                        sandesha2_rm_elements_get_addr_ns_val;
+    rm_elements_impl->elements.ops->free = sandesha2_rm_elements_free;
+                        
+	return &(rm_elements_impl->elements);
+}
+
+
+axis2_status_t AXIS2_CALL 
+sandesha2_rm_elements_free(sandesha2_rm_elements_t *elements, 
+                        const axis2_env_t *env)
+{
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    
+    if(NULL != elements->ops)
+    {
+        AXIS2_FREE(env->allocator, elements->ops);
+        elements->ops = NULL;
+    }
+	AXIS2_FREE(env->allocator, SANDESHA2_INTF_TO_IMPL(elements));
+	return AXIS2_SUCCESS;
+}
+
+axis2_status_t AXIS2_CALL 
+sandesha2_rm_elements_from_soap_envelope
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env,
+            axiom_soap_envelope_t *soap_envelope,
+            axis2_char_t *action)
+{
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK(env->error, soap_envelope, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK(env->error, action, AXIS2_FAILURE);
+    
+    return AXIS2_SUCCESS;
+}
+            
+axiom_soap_envelope_t* AXIS2_CALL 
+sandesha2_rm_elements_to_soap_envelope
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env,
+            axiom_soap_envelope_t *soap_envelope)
+{
+    AXIS2_ENV_CHECK(env, NULL);
+    AXIS2_PARAM_CHECK(env->error, soap_envelope, NULL);
+    
+    return NULL;
+}
+            
+sandesha2_create_seq_t* AXIS2_CALL 
+sandesha2_rm_elements_get_create_seq 
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env)
+{
+    AXIS2_ENV_CHECK(env, NULL);
+    
+    return NULL;
+}
+            
+axis2_status_t AXIS2_CALL 
+sandesha2_rm_elements_set_create_seq
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env,
+            sandesha2_create_seq_t *create_seq)
+{
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK(env->error, create_seq, AXIS2_FAILURE);
+    
+    return AXIS2_SUCCESS;
+}
+    
+sandesha2_create_seq_res_t* AXIS2_CALL 
+sandesha2_rm_elements_get_create_seq_res
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env)
+{
+    AXIS2_ENV_CHECK(env, NULL);
+    
+    return NULL;
+}
+            
+axis2_status_t AXIS2_CALL 
+sandesha2_rm_elements_set_create_seq_res
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env,
+            sandesha2_create_seq_res_t *create_seq_res)
+{
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK(env->error, create_seq_res, AXIS2_FAILURE);
+    
+    return AXIS2_SUCCESS;
+}
+            
+sandesha2_seq_t* AXIS2_CALL 
+sandesha2_rm_elements_get_seq
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env)
+{
+    AXIS2_ENV_CHECK(env, NULL);
+    
+    return NULL;
+}
+            
+axis2_status_t AXIS2_CALL 
+sandesha2_rm_elements_set_seq
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env,
+            sandesha2_seq_t *seq)
+{
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK(env->error, seq, AXIS2_FAILURE);
+    
+    return AXIS2_SUCCESS;
+}
+            
+sandesha2_seq_ack_t* AXIS2_CALL 
+sandesha2_rm_elements_get_seq_ack
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env)
+{
+    AXIS2_ENV_CHECK(env, NULL);
+    
+    return NULL;
+}
+            
+axis2_status_t AXIS2_CALL 
+sandesha2_rm_elements_set_seq_ack
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env,
+            sandesha2_seq_ack_t *seq_ack)
+{
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK(env->error, seq_ack, AXIS2_FAILURE);
+    
+    return AXIS2_SUCCESS;
+}
+            
+sandesha2_terminate_seq_t* AXIS2_CALL 
+sandesha2_rm_elements_get_terminate_seq
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env)
+{
+    AXIS2_ENV_CHECK(env, NULL);
+    
+    return NULL;
+}
+            
+axis2_status_t AXIS2_CALL 
+sandesha2_rm_elements_set_terminate_seq
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env,
+            sandesha2_terminate_seq_t *terminate_seq)
+{
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK(env->error, terminate_seq, AXIS2_FAILURE);
+    
+    return AXIS2_SUCCESS;
+}
+            
+sandesha2_terminate_seq_res_t* AXIS2_CALL 
+sandesha2_rm_elements_get_terminate_seq_res
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env)
+{
+    AXIS2_ENV_CHECK(env, NULL);
+    
+    return NULL;
+}
+            
+axis2_status_t AXIS2_CALL 
+sandesha2_rm_elements_set_terminate_seq_res
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env,
+            sandesha2_terminate_seq_res_t *terminate_seq_res)
+{
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK(env->error, terminate_seq_res, AXIS2_FAILURE);
+    
+    return AXIS2_SUCCESS;
+}
+            
+sandesha2_ack_requested_t* AXIS2_CALL 
+sandesha2_rm_elements_get_ack_reqested
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env)
+{
+    AXIS2_ENV_CHECK(env, NULL);
+    
+    return NULL;
+}
+            
+axis2_status_t AXIS2_CALL 
+sandesha2_rm_elements_set_ack_reqested
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env,
+            sandesha2_ack_requested_t *ack_reqested)
+{
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK(env->error, ack_reqested, AXIS2_FAILURE);
+    
+    return AXIS2_SUCCESS;
+}
+    
+sandesha2_close_seq_t* AXIS2_CALL 
+sandesha2_rm_elements_get_close_seq
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env)
+{
+    AXIS2_ENV_CHECK(env, NULL);
+    
+    return NULL;
+}
+            
+axis2_status_t AXIS2_CALL 
+sandesha2_rm_elements_set_close_seq
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env,
+            sandesha2_close_seq_t *close_seq)
+{
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK(env->error, close_seq, AXIS2_FAILURE);
+    
+    return AXIS2_SUCCESS;
+}
+    
+sandesha2_close_seq_res_t* AXIS2_CALL 
+sandesha2_rm_elements_get_close_seq_res
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env)
+{
+    AXIS2_ENV_CHECK(env, NULL);
+    
+    return NULL;
+}
+            
+axis2_status_t AXIS2_CALL 
+sandesha2_rm_elements_set_close_seq_res
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env,
+            sandesha2_close_seq_res_t *close_seq_res)
+{
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK(env->error, close_seq_res, AXIS2_FAILURE);
+    
+    return AXIS2_SUCCESS;
+}
+    
+axis2_char_t* AXIS2_CALL 
+sandesha2_rm_elements_get_addr_ns_val
+            (sandesha2_rm_elements_t *rm_elements,
+            const axis2_env_t *env)
+{
+    AXIS2_ENV_CHECK(env, NULL);
+    
+    return NULL;
+}



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