Author: damitha
Date: Mon Sep  1 02:44:34 2008
New Revision: 690926

URL: http://svn.apache.org/viewvc?rev=690926&view=rev
Log:
rm rm1-0 single channel two way now receive terminate sequece from server side

Modified:
    webservices/sandesha/trunk/c/src/msgprocessors/app_msg_processor.c

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=690926&r1=690925&r2=690926&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/src/msgprocessors/app_msg_processor.c 
(original)
+++ webservices/sandesha/trunk/c/src/msgprocessors/app_msg_processor.c Mon Sep  
1 02:44:34 2008
@@ -90,6 +90,15 @@
     void *msg_ctx;
 };
 
+static void AXIS2_CALL                 
+sandesha2_app_msg_processor_is_last_out_msg(
+    const axutil_env_t *env,
+    axis2_msg_ctx_t *msg_ctx,
+    axis2_char_t *rmd_sequence_id,
+    axis2_char_t *internal_sequence_id,
+    long msg_num,
+    sandesha2_seq_property_mgr_t *seq_prop_mgr);
+
 static void * AXIS2_THREAD_FUNC
 sandesha2_app_msg_processor_create_seq_msg_worker_function(
     axutil_thread_t *thd, 
@@ -761,6 +770,7 @@
             
             op = axis2_op_ctx_get_op(op_ctx, env);
             mep = axis2_op_get_axis_specific_mep_const(op, env);
+            AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[sandesha2] mep:%d", mep);
             if(mep == AXIS2_MEP_CONSTANT_IN_ONLY)
             {
                 send_response = AXIS2_FALSE;
@@ -1076,7 +1086,7 @@
     axis2_bool_t is_svr_side = AXIS2_FALSE;
     axis2_char_t *internal_sequence_id = NULL;
     axis2_char_t *storage_key = NULL;
-    axis2_bool_t last_msg = AXIS2_FALSE;
+    /*axis2_bool_t last_msg = AXIS2_FALSE;*/
     axutil_property_t *property = NULL;
     long msg_num_lng = -1;
     long system_msg_num = -1;
@@ -1099,7 +1109,7 @@
     axis2_char_t *to_addr = NULL;
     axis2_op_ctx_t *op_ctx = NULL;
     axis2_msg_ctx_t *req_msg_ctx = NULL;
-    axis2_relates_to_t *relates_to = NULL;
+    /*axis2_relates_to_t *relates_to = NULL;*/
     axis2_char_t *dbname = NULL;
     sandesha2_seq_property_bean_t *seq_timeout_bean = NULL;
     axis2_status_t status = AXIS2_FAILURE;
@@ -1169,9 +1179,9 @@
     {
         sandesha2_seq_t *req_seq = NULL;
         long request_msg_no = -1;
-        const axis2_relates_to_t *relates_to = NULL;
-        axis2_char_t *relates_to_value = NULL;
-        axis2_char_t *last_req_id = NULL;
+        /*const axis2_relates_to_t *relates_to = NULL;*/
+        /*axis2_char_t *relates_to_value = NULL;*/
+        /*axis2_char_t *last_req_id = NULL;*/
        
         req_rm_msg_ctx = sandesha2_msg_init_init_msg(env, req_msg_ctx);
         req_seq = sandesha2_msg_ctx_get_sequence(req_rm_msg_ctx, env);
@@ -1238,7 +1248,7 @@
         /* Deciding whether this is the last message. We assume it is if it 
          * relates to a message which arrived with the LastMessage flag on it.
          */
-        last_req_id = sandesha2_utils_get_seq_property(env, rmd_sequence_id, 
+        /*last_req_id = sandesha2_utils_get_seq_property(env, rmd_sequence_id, 
             SANDESHA2_SEQ_PROP_LAST_IN_MESSAGE_ID, seq_prop_mgr);
 
         relates_to = axis2_msg_ctx_get_relates_to(msg_ctx, env);
@@ -1251,13 +1261,16 @@
         if(last_req_id)
         {
             AXIS2_FREE(env->allocator, last_req_id);
-        }
+        }*/
+        
+        /*last_msg = sandesha2_app_msg_processor_is_last_out_msg(env, msg_ctx, 
rmd_sequence_id, 
+                internal_sequence_id, seq_prop_mgr);*/
     }
     else /* Client side */
     {
         axis2_char_t *to = NULL;
         axis2_char_t *seq_key = NULL;
-        axis2_char_t *last_app_msg = NULL;
+        /*axis2_char_t *last_app_msg = NULL;*/
         
         to = (axis2_char_t*)axis2_endpoint_ref_get_address(to_epr, env);
         property = axis2_msg_ctx_get_property(msg_ctx, env, 
SANDESHA2_CLIENT_SEQ_KEY);
@@ -1275,7 +1288,11 @@
 
         internal_sequence_id = 
sandesha2_utils_get_client_internal_sequence_id(env, to, 
                 seq_key);
-        property = axis2_msg_ctx_get_property(msg_ctx, env, 
SANDESHA2_CLIENT_LAST_MESSAGE);
+       
+        /*last_msg = sandesha2_app_msg_processor_is_last_out_msg(env, msg_ctx, 
NULL, 
+                internal_sequence_id, seq_prop_mgr);*/
+        
+        /*property = axis2_msg_ctx_get_property(msg_ctx, env, 
SANDESHA2_CLIENT_LAST_MESSAGE);
         if(property)
         {
             last_app_msg = axutil_property_get_value(property, env);
@@ -1301,7 +1318,7 @@
                 AXIS2_FREE(env->allocator, spec_ver);
                 spec_ver = NULL;
             }
-        }
+        }*/
     }
 
     seq_timeout_bean = sandesha2_seq_property_mgr_retrieve(seq_prop_mgr, env, 
internal_sequence_id, 
@@ -1475,24 +1492,8 @@
         sandesha2_seq_property_bean_free(res_highest_msg_bean, env);
     }
 
-    relates_to = axis2_msg_ctx_get_relates_to(msg_ctx, env);
-    if(relates_to)
-    {
-        sandesha2_seq_property_bean_t *response_relates_to_bean = NULL; 
-        const axis2_char_t *relates_to_value = 
axis2_relates_to_get_value(relates_to, env);
-
-        response_relates_to_bean = 
sandesha2_seq_property_bean_create_with_data(env, 
-                internal_sequence_id, 
SANDESHA2_SEQ_PROP_HIGHEST_OUT_RELATES_TO, 
-                (axis2_char_t *) relates_to_value);
-        
-        if(response_relates_to_bean)
-        {
-            sandesha2_seq_property_mgr_insert(seq_prop_mgr, env, 
response_relates_to_bean);
-            sandesha2_seq_property_bean_free(response_relates_to_bean, env);
-        }
-    }
 
-    if(last_msg)
+    /*if(last_msg)
     {
         sandesha2_seq_property_bean_t *res_last_msg_key_bean = NULL;
        
@@ -1504,7 +1505,7 @@
             sandesha2_seq_property_mgr_insert(seq_prop_mgr, env, 
res_last_msg_key_bean);
             sandesha2_seq_property_bean_free(res_last_msg_key_bean, env);
         }
-    }
+    }*/
 
 
     if(is_svr_side)
@@ -2818,6 +2819,7 @@
     int retrans_interval = 0;
     axis2_conf_t *conf = NULL;
     const axis2_char_t *mep = NULL;
+    axis2_relates_to_t *relates_to = NULL;
 
     AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI,   
         "[Sandesha2] Entry:sandesha2_app_msg_processor_send_app_msg");
@@ -2827,11 +2829,29 @@
     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);
+
+    relates_to = axis2_msg_ctx_get_relates_to(app_msg_ctx, env);
+    if(relates_to)
+    {
+        sandesha2_seq_property_bean_t *response_relates_to_bean = NULL; 
+        const axis2_char_t *relates_to_value = 
axis2_relates_to_get_value(relates_to, env);
+
+        response_relates_to_bean = 
sandesha2_seq_property_bean_create_with_data(env, 
+                internal_sequence_id, 
SANDESHA2_SEQ_PROP_HIGHEST_OUT_RELATES_TO, 
+                (axis2_char_t *) relates_to_value);
+        
+        if(response_relates_to_bean)
+        {
+            sandesha2_seq_property_mgr_insert(seq_prop_mgr, env, 
response_relates_to_bean);
+            sandesha2_seq_property_bean_free(response_relates_to_bean, env);
+        }
+    }
+  
+    sandesha2_app_msg_processor_set_last_out_msg_no(env, internal_sequence_id, 
msg_num, seq_prop_mgr);
+
     to_bean = sandesha2_seq_property_mgr_retrieve(seq_prop_mgr, env, 
internal_sequence_id, 
             SANDESHA2_SEQ_PROP_TO_EPR);
 
@@ -3044,6 +3064,9 @@
             SANDESHA2_SEQ_PROP_ACKS_TO_EPR);
     }
 
+    sandesha2_app_msg_processor_is_last_out_msg(env, app_msg_ctx, 
rmd_sequence_id, 
+        internal_sequence_id, msg_num, seq_prop_mgr);
+
     if(from_acks_to_bean)
     {
         axis2_endpoint_ref_t *from_acks_to_epr = NULL;
@@ -3988,3 +4011,94 @@
 }
 
 
+static void AXIS2_CALL                 
+sandesha2_app_msg_processor_is_last_out_msg(
+    const axutil_env_t *env,
+    axis2_msg_ctx_t *msg_ctx,
+    axis2_char_t *rmd_sequence_id,
+    axis2_char_t *internal_sequence_id,
+    long msg_num,
+    sandesha2_seq_property_mgr_t *seq_prop_mgr)
+{
+    axis2_bool_t is_svr_side = AXIS2_FALSE;
+    axis2_bool_t last_msg = AXIS2_FALSE;
+
+    is_svr_side = axis2_msg_ctx_get_server_side(msg_ctx, env);
+    if(is_svr_side)
+    {
+        axis2_char_t *last_req_id = NULL;
+        axis2_char_t *relates_to_value = NULL;
+        const axis2_relates_to_t *relates_to = NULL;
+
+       /* Deciding whether this is the last message. We assume it is if it 
+        * relates to a message which arrived with the LastMessage flag on it.
+        */
+        last_req_id = sandesha2_utils_get_seq_property(env, rmd_sequence_id, 
+            SANDESHA2_SEQ_PROP_LAST_IN_MESSAGE_ID, seq_prop_mgr);
+
+        relates_to = axis2_msg_ctx_get_relates_to(msg_ctx, env);
+        relates_to_value = (axis2_char_t 
*)axis2_relates_to_get_value(relates_to, env);
+        if(relates_to && last_req_id && !axutil_strcmp(last_req_id, 
relates_to_value))
+        {
+            last_msg = AXIS2_TRUE;
+        }
+
+        if(last_req_id)
+        {
+            AXIS2_FREE(env->allocator, last_req_id);
+        }
+    }
+    else
+    {
+        axutil_property_t *property = NULL;
+        axis2_char_t *last_app_msg = NULL;
+
+        property = axis2_msg_ctx_get_property(msg_ctx, env, 
SANDESHA2_CLIENT_LAST_MESSAGE);
+        if(property)
+        {
+            last_app_msg = axutil_property_get_value(property, env);
+        }
+
+        if(last_app_msg && !axutil_strcmp(last_app_msg, AXIS2_VALUE_TRUE))
+        {
+            axis2_char_t *spec_ver = NULL;
+
+            spec_ver = sandesha2_utils_get_rm_version(env, 
internal_sequence_id, seq_prop_mgr);
+            if(!spec_ver)
+            {
+                axutil_property_t *spec_ver_prop = NULL;
+
+                spec_ver_prop = axis2_msg_ctx_get_property(msg_ctx, env, 
+                        SANDESHA2_CLIENT_RM_SPEC_VERSION);
+
+                spec_ver = axutil_strdup(env, 
axutil_property_get_value(spec_ver_prop, env));
+            }
+            if(sandesha2_spec_specific_consts_is_last_msg_indicator_reqd(env, 
spec_ver))
+            {
+                last_msg = AXIS2_TRUE;
+            }
+            if(spec_ver)
+            {
+                AXIS2_FREE(env->allocator, spec_ver);
+                spec_ver = NULL;
+            }
+        }
+    }
+
+    if(last_msg)
+    {
+        axis2_char_t msg_number_str[32];
+        sandesha2_seq_property_bean_t *res_last_msg_key_bean = NULL;
+       
+        sprintf(msg_number_str, "%ld", msg_num); 
+        res_last_msg_key_bean = 
sandesha2_seq_property_bean_create_with_data(env, 
+                internal_sequence_id, SANDESHA2_SEQ_PROP_LAST_OUT_MESSAGE_NO, 
msg_number_str);
+
+        if(res_last_msg_key_bean)
+        {
+            sandesha2_seq_property_mgr_insert(seq_prop_mgr, env, 
res_last_msg_key_bean);
+            sandesha2_seq_property_bean_free(res_last_msg_key_bean, env);
+        }
+    }
+}
+



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to