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/21 05:44:46 UTC
svn commit: r424160 - /webservices/sandesha/trunk/c/src/workers/sender.c
Author: sahan
Date: Thu Jul 20 20:44:46 2006
New Revision: 424160
URL: http://svn.apache.org/viewvc?rev=424160&view=rev
Log:
Finishing the worker_func of sender
Modified:
webservices/sandesha/trunk/c/src/workers/sender.c
Modified: webservices/sandesha/trunk/c/src/workers/sender.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/workers/sender.c?rev=424160&r1=424159&r2=424160&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/src/workers/sender.c (original)
+++ webservices/sandesha/trunk/c/src/workers/sender.c Thu Jul 20 20:44:46 2006
@@ -31,6 +31,8 @@
#include <axiom_soap_fault.h>
#include <axiom_soap_body.h>
#include <sandesha2_msg_init.h>
+#include <sandesha2/sandesha2_terminate_seq.h>
+#include <sandesha2/sandesha2_terminate_mgr.h>
/**
@@ -459,7 +461,6 @@
sandesha2_sender_mgr_t *mgr = NULL;
sandesha2_sender_bean_t *sender_bean = NULL;
sandesha2_seq_property_mgr_t *seq_prop_mgr = NULL;
- int i = 0;
axis2_char_t *key = NULL;
axis2_msg_ctx_t *msg_ctx = NULL;
axis2_property_t *property = NULL;
@@ -468,6 +469,11 @@
sandesha2_msg_ctx_t *rm_msg_ctx = NULL;
sandesha2_property_bean_t *prop_bean = NULL;
axis2_array_list_t *msgs_not_to_send = NULL;
+ int msg_type = -1;
+ axis2_transport_out_desc_t *transport_out = NULL;
+ axis2_transport_sender_t *transport_sender = NULL;
+ axis2_bool_t successfully_sent = AXIS2_FALSE;
+ sandesha2_sender_bean_t *bean1 = NULL;
sleep(1);
transaction = SANDESHA2_STORAGE_MGR_GET_TRANSACTION(storage_mgr,
@@ -531,11 +537,87 @@
if(AXIS2_FALSE == continue_sending)
continue;
}
+ msg_type = SANDESHA2_MSG_CTX_GET_MSG_TYPE(rm_msg_ctx, env);
-
- SANDESHA2_TRANSACTION_COMMIT(transaction, env);
+ if(AXIS2_TRUE == sandesha2_sender_is_piggybackable_msg_type(sender, env,
+ msg_type) && AXIS2_FALSE ==
+ sandesha2_sender_is_ack_already_piggybacked(sender, env,
+ rm_msg_ctx))
+ sandesha2_ack_mgr_piggyback_acks_if_present(env, rm_msg_ctx,
+ storage_mgr);
+
+
+ transport_out = AXIS2_MSG_CTX_GET_TRANSPORT_OUT_DESC(msg_ctx, env);
+ transport_sender = AXIS2_TRANSPORT_OUT_DESC_GET_SENDER(transport_out,
+ env);
+ if(NULL != transport_sender)
+ {
+ SANDESHA2_TRANSACTION_COMMIT(transaction, env);
+ 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));
+ AXIS2_MSG_CTX_SET_PROPERTY(msg_ctx, env,
+ SANDESHA2_WITHIN_TRANSACTION, property, AXIS2_FALSE);
+ /* Consider building soap envelope */
+ AXIS2_TRANSPORT_SENDER_INVOKE(transport_sender, env, msg_ctx);
+ successfully_sent = AXIS2_TRUE;
+
+ }
+ transaction = SANDESHA2_STORAGE_MGR_GET_TRANSACTION(storage_mgr,
+ env);
+ 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_ctx, env,
+ SANDESHA2_WITHIN_TRANSACTION, property, AXIS2_FALSE);
+ bean1 = SANDESHA2_SENDER_MGR_RETRIEVE(mgr, env,
+ SANDESHA2_SENDER_BEAN_GET_MSG_ID(sender_bean, env));
+ if(NULL != bean1)
+ {
+ SANDESHA2_SENDER_BEAN_SET_SENT_COUNT(bean1, env,
+ SANDESHA2_SENDER_BEAN_GET_SENT_COUNT(sender_bean, env));
+ SANDESHA2_SENDER_BEAN_SET_TIME_TO_SEND(bean1, env,
+ SANDESHA2_SENDER_BEAN_GET_TIME_TO_SEND(sender_bean, env));
+ SANDESHA2_SENDER_BEAN_MGR_UPDATE(mgr, env, bean1);
+ }
+ if(AXIS2_TRUE == successfully_sent)
+ {
+ if(AXIS2_FALSE == AXIS2_MSG_CTX_IS_SVR_SIDE(msg_ctx, env))
+ sandesha2_sender_check_for_sync_res(sender, env, msg_ctx);
+ }
+ if(SANDESHA2_MSG_TYPE_TERMINATE_SEQ == SANDESHA2_MSG_CTX_GET_MSG_TYPE(
+ rm_msg_ctx, env))
+ {
+ sandesha2_terminate_seq_t *terminate_seq = NULL;
+ axis2_char_t *seq_id = NULL;
+ axis2_conf_ctx_t *conf_ctx = NULL;
+ axis2_char_t *int_seq_id = NULL;
+
+ terminate_seq = (sandesha2_terminate_seq_t*)
+ SANDESHA2_MSG_CTX_GET_MSG_PART(rm_msg_ctx, env,
+ SANDESHA2_MSG_PART_TERMINATE_SEQ);
+ seq_id = SANDESHA2_IDENTIFIER_GET_IDENTIFIER(
+ SANDESHA2_TERMINATE_SEQ_GET_IDENTIFIER(terminate_seq,
+ env), env);
+ conf_ctx = AXIS2_MSG_CTX_GET_CONF_CTX(msg_ctx, env);
+ int_seq_id = sandesha2_utils_get_seq_property(env, seq_id,
+ SANDESHA2_SEQ_PROP_INTERNAL_SEQ_ID, storage_mgr);
+ sandesha2_terminate_mgr_terminate_sending_side(env, conf_ctx,
+ int_seq_id, AXIS2_MSG_CTX_IS_SVR_SIDE(msg_ctx, env),
+ storage_mgr);
+ }
+ 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));
+ AXIS2_MSG_CTX_SET_PROPERTY(msg_ctx, env,
+ SANDESHA2_WITHIN_TRANSACTION, property, AXIS2_FALSE);
/* TODO make transaction handling effective */
+ SANDESHA2_TRANSACTION_COMMIT(transaction, env);
}
+
return NULL;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org