svn commit: r690524 - in /webservices/sandesha/trunk/c: include/sandesha2_constants.h src/msgprocessors/app_msg_processor.c src/util/msg_creator.c

[email protected]
Newsgroups gmane.comp.apache.webservices.fx.devel
Message-ID <[email protected]>
Author: damitha
Date: Sat Aug 30 08:47:21 2008
New Revision: 690524

URL: http://svn.apache.org/viewvc?rev=690524&view=rev
Log:
Adding LastMsgNumber into terminate sequence message originated from server side

Modified:
    webservices/sandesha/trunk/c/include/sandesha2_constants.h
    webservices/sandesha/trunk/c/src/msgprocessors/app_msg_processor.c
    webservices/sandesha/trunk/c/src/util/msg_creator.c

Modified: webservices/sandesha/trunk/c/include/sandesha2_constants.h
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/include/sandesha2_constants.h?rev=690524&r1=690523&r2=690524&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/include/sandesha2_constants.h (original)
+++ webservices/sandesha/trunk/c/include/sandesha2_constants.h Sat Aug 30 08:47:21 2008
@@ -255,6 +255,8 @@
 	#define SANDESHA2_SEQ_PROP_OUT_CREATE_SEQ_SENT  "OutCreateSeqSent"
 
 	#define SANDESHA2_SEQ_PROP_NEXT_MESSAGE_NUMBER  "NextMsgNo"
+	
+    #define SANDESHA2_SEQ_PROP_LAST_OUT_MESSAGE_NUMBER  "LastOutMsgNo"
 
 	#define SANDESHA2_SEQ_PROP_INCOMING_SEQ_LIST  "IncomingSequenceList"
 

Modified: webservices/sandesha/trunk/c/src/msgprocessors/app_msg_processor.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/msgprocessors/app_msg_processor.c?rev=690524&r1=690523&r2=690524&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/src/msgprocessors/app_msg_processor.c (original)
+++ webservices/sandesha/trunk/c/src/msgprocessors/app_msg_processor.c Sat Aug 30 08:47:21 2008
@@ -194,6 +194,13 @@
     long msg_num,
     sandesha2_seq_property_mgr_t *seq_prop_mgr);
                         
+static axis2_status_t AXIS2_CALL                 
+sandesha2_app_msg_processor_set_last_out_msg_no(
+    const axutil_env_t *env,
+    axis2_char_t *internal_seq_id,
+    long msg_num,
+    sandesha2_seq_property_mgr_t *seq_prop_mgr);
+
 static axis2_status_t AXIS2_CALL 
 sandesha2_app_msg_processor_free (
     sandesha2_msg_processor_t *element, 
@@ -2774,7 +2781,9 @@
     AXIS2_PARAM_CHECK(env->error, storage_mgr, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, seq_prop_mgr, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, sender_mgr, AXIS2_FAILURE);
-    
+   
+    sandesha2_app_msg_processor_set_last_out_msg_no(env, internal_sequence_id, msg_num, seq_prop_mgr);
+
     app_msg_ctx = sandesha2_msg_ctx_get_msg_ctx(rm_msg_ctx, env);
     conf_ctx = axis2_msg_ctx_get_conf_ctx(app_msg_ctx, env);
     to_bean = sandesha2_seq_property_mgr_retrieve(seq_prop_mgr, env, internal_sequence_id, 
@@ -3875,4 +3884,61 @@
     return AXIS2_SUCCESS;
 }
 
+static axis2_status_t AXIS2_CALL                 
+sandesha2_app_msg_processor_set_last_out_msg_no(
+    const axutil_env_t *env,
+    axis2_char_t *internal_seq_id,
+    long msg_num,
+    sandesha2_seq_property_mgr_t *seq_prop_mgr)
+{
+    sandesha2_seq_property_bean_t *last_out_msg_no_bean = NULL;
+    axis2_bool_t update = AXIS2_TRUE;
+    axis2_char_t str_long[32];
+    
+    AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI,  
+        "[sandesha2] Entry:sandesha2_app_msg_processor_set_last_out_msg_no");
+    AXIS2_PARAM_CHECK(env->error, internal_seq_id, AXIS2_FAILURE);
+    AXIS2_PARAM_CHECK(env->error, seq_prop_mgr, AXIS2_FAILURE);
+    
+    if(msg_num <= 0)
+    {
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[sandesha2] Invalid Message Number");
+        AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_INVALID_MSG_NUM, AXIS2_FAILURE);
+        return AXIS2_FAILURE;
+    }
+
+    last_out_msg_no_bean = sandesha2_seq_property_mgr_retrieve(seq_prop_mgr, env, 
+        internal_seq_id, SANDESHA2_SEQ_PROP_LAST_OUT_MESSAGE_NUMBER);
+
+    if(!last_out_msg_no_bean)
+    {
+        update = AXIS2_FALSE;
+        last_out_msg_no_bean = sandesha2_seq_property_bean_create(env);
+        sandesha2_seq_property_bean_set_seq_id(last_out_msg_no_bean, env, internal_seq_id);
+
+        sandesha2_seq_property_bean_set_name(last_out_msg_no_bean, env,
+            SANDESHA2_SEQ_PROP_LAST_OUT_MESSAGE_NUMBER);        
+    }
+
+    sprintf(str_long, "%ld", msg_num);
+    sandesha2_seq_property_bean_set_value(last_out_msg_no_bean, env, str_long);
+    if(update)
+    {
+        sandesha2_seq_property_mgr_update(seq_prop_mgr, env, last_out_msg_no_bean);
+    }
+    else
+    {
+        sandesha2_seq_property_mgr_insert(seq_prop_mgr, env, last_out_msg_no_bean);
+    }
+    if(last_out_msg_no_bean)
+    {
+        sandesha2_seq_property_bean_free(last_out_msg_no_bean, env);
+    }
+
+    AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI,  
+        "[sandesha2] Exit:sandesha2_app_msg_processor_set_last_out_msg_no");
+	
+    return AXIS2_SUCCESS;
+}
+
 

Modified: webservices/sandesha/trunk/c/src/util/msg_creator.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/util/msg_creator.c?rev=690524&r1=690523&r2=690524&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/src/util/msg_creator.c (original)
+++ webservices/sandesha/trunk/c/src/util/msg_creator.c Sat Aug 30 08:47:21 2008
@@ -575,6 +575,8 @@
     sandesha2_terminate_seq_t *terminate_seq = NULL;
     int soap_version = -1;
     sandesha2_identifier_t *identifier = NULL;
+    sandesha2_last_msg_number_t *last_msg_number = NULL;
+    sandesha2_seq_property_bean_t *last_out_msg_no_bean = NULL;
 
     ref_msg_ctx = sandesha2_msg_ctx_get_msg_ctx(ref_rm_msg, env);
     /*axis2_msg_ctx_set_keep_alive(ref_msg_ctx, env, AXIS2_TRUE);*/
@@ -636,6 +638,34 @@
     sandesha2_identifier_set_identifier(identifier, env, seq_id);
     sandesha2_terminate_seq_set_identifier(terminate_seq, env, identifier);
     sandesha2_msg_ctx_set_terminate_seq(terminate_rm_msg, env, terminate_seq);
+
+    if(is_seq_res_reqd)
+    {
+        last_out_msg_no_bean = sandesha2_seq_property_mgr_retrieve(seq_prop_mgr, env, 
+            internal_seq_id, SANDESHA2_SEQ_PROP_LAST_OUT_MESSAGE_NUMBER);
+    }
+
+    if(last_out_msg_no_bean)
+    {
+        axis2_char_t *msg_no_str = NULL;
+        long last_msg_num = -1;
+
+        msg_no_str = sandesha2_seq_property_bean_get_value(last_out_msg_no_bean, env);
+        if(msg_no_str)
+        {
+            last_msg_num = atol(msg_no_str);
+        }
+
+        last_msg_number = sandesha2_last_msg_number_create(env, rm_ns_value);
+        if(last_msg_number)
+        {
+            sandesha2_last_msg_number_set_last_msg_number(last_msg_number, env, last_msg_num);
+            sandesha2_terminate_seq_set_last_msg_number(terminate_seq, env, last_msg_number);
+        }
+
+        sandesha2_seq_property_bean_free(last_out_msg_no_bean, env);
+    }
+
     sandesha2_msg_creator_finalize_creation(env, ref_msg_ctx, terminate_seq_msg_ctx);
     axis2_msg_ctx_set_property(terminate_seq_msg_ctx, env, AXIS2_TRANSPORT_IN, NULL);
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.