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/19 08:16:24 UTC
svn commit: r423381 - in /webservices/sandesha/trunk/c:
include/sandesha2/sandesha2_in_order_invoker.h include/sandesha2_sender.h
src/workers/sender.c
Author: sahan
Date: Tue Jul 18 23:16:24 2006
New Revision: 423381
URL: http://svn.apache.org/viewvc?rev=423381&view=rev
Log:
Adding sender code
Modified:
webservices/sandesha/trunk/c/include/sandesha2/sandesha2_in_order_invoker.h
webservices/sandesha/trunk/c/include/sandesha2_sender.h
webservices/sandesha/trunk/c/src/workers/sender.c
Modified: webservices/sandesha/trunk/c/include/sandesha2/sandesha2_in_order_invoker.h
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/include/sandesha2/sandesha2_in_order_invoker.h?rev=423381&r1=423380&r2=423381&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/include/sandesha2/sandesha2_in_order_invoker.h (original)
+++ webservices/sandesha/trunk/c/include/sandesha2/sandesha2_in_order_invoker.h Tue Jul 18 23:16:24 2006
@@ -97,7 +97,7 @@
#define SANDESHA2_IN_ORDER_INVOKER_FREE(invoker, env) \
((invoker)->ops->free (invoker, env))
-#define SANDESHA2_IN_ORDER_INVOKER_STOP_INVOKER_FOR_SEQ(invoker, env, id) \
+#define SANDESHA2_IN_ORDER_INVOKER_STOP_FOR_SEQ(invoker, env, id) \
((invoker)->ops->stop_invoker_for_seq(invoker, env, id))
#define SANDESHA2_IN_ORDER_INVOKER_STOP_INVOKING(invoker, env) \
@@ -106,7 +106,7 @@
#define SANDESHA2_IN_ORDER_INVOKER_IS_INVOKER_STARTED(invoker, env) \
((invoker)->ops->is_invoker_started(invoker, env))
-#define SANDESHA2_IN_ORDER_INVOKER_RUN_INVOKER_FOR_SEQ(invoker, env, \
+#define SANDESHA2_IN_ORDER_INVOKER_RUN_FOR_SEQ(invoker, env, \
conf_ctx, id) \
((invoker)->ops->run_invoker_for_seq(invoker, env, conf_ctx, id))
Modified: webservices/sandesha/trunk/c/include/sandesha2_sender.h
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/include/sandesha2_sender.h?rev=423381&r1=423380&r2=423381&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/include/sandesha2_sender.h (original)
+++ webservices/sandesha/trunk/c/include/sandesha2_sender.h Tue Jul 18 23:16:24 2006
@@ -50,7 +50,7 @@
*/
axis2_status_t (AXIS2_CALL *
free) (
- void *sender,
+ sandesha2_sender_t *sender,
const axis2_env_t *env);
axis2_status_t (AXIS2_CALL *
@@ -94,7 +94,7 @@
#define SANDESHA2_SENDER_FREE(sender, env) \
(((sandesha2_sender_t *) sender)->ops->free (sender, env))
-#define SANDESHA2_SENDER_STOP_SENDER_FOR_SEQ(sender, env, \
+#define SANDESHA2_SENDER_STOP_FOR_SEQ(sender, env, \
seq_id) \
(((sandesha2_sender_t *) sender)->ops->\
stop_for_seq (sender, env, seq_id))
@@ -111,7 +111,7 @@
(((sandesha2_sender_t *) sender)->ops->\
run (sender, env))
-#define SANDESHA2_SENDER_RUN_SENDER_FOR_SEQ(sender, env, conf_ctx, seq_id) \
+#define SANDESHA2_SENDER_RUN_FOR_SEQ(sender, env, conf_ctx, seq_id) \
(((sandesha2_sender_t *) sender)->ops->\
run_for_seq (sender, env, conf_ctx, seq_id))
Modified: webservices/sandesha/trunk/c/src/workers/sender.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/c/src/workers/sender.c?rev=423381&r1=423380&r2=423381&view=diff
==============================================================================
--- webservices/sandesha/trunk/c/src/workers/sender.c (original)
+++ webservices/sandesha/trunk/c/src/workers/sender.c Tue Jul 18 23:16:24 2006
@@ -25,6 +25,11 @@
#include <axis2_addr.h>
#include <axis2_engine.h>
#include <stdio.h>
+#include <axis2_http_transport.h>
+#include <axis2_http_transport_utils.h>
+#include <axiom_soap_const.h>
+#include <axiom_soap_fault.h>
+#include <axiom_soap_body.h>
/**
@@ -302,13 +307,76 @@
const axis2_env_t *env, axis2_msg_ctx_t *msg_ctx)
{
axis2_property_t *property = NULL;
+ axis2_msg_ctx_t *res_msg_ctx = NULL;
+ axis2_op_ctx_t *req_op_ctx = NULL;
+ axiom_soap_envelope_t *res_envelope = NULL;
+ axis2_char_t *soap_ns_uri = NULL;
AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
AXIS2_PARAM_CHECK(env->error, msg_ctx, AXIS2_FAILURE);
property = AXIS2_MSG_CTX_GET_PROPERTY(msg_ctx, env, AXIS2_TRANSPORT_IN,
AXIS2_FALSE);
-
+ if(NULL == property)
+ return AXIS2_SUCCESS;
+
+ res_msg_ctx = axis2_msg_ctx_create(env, AXIS2_MSG_CTX_GET_CONF_CTX(msg_ctx,
+ env), AXIS2_MSG_CTX_GET_TRANSPORT_IN_DESC(
+ msg_ctx, env), AXIS2_MSG_CTX_GET_TRANSPORT_OUT_DESC(msg_ctx,
+ env));
+ AXIS2_MSG_CTX_SET_SVR_SIDE(res_msg_ctx, env, AXIS2_FALSE);
+ AXIS2_MSG_CTX_SET_PROPERTY(res_msg_ctx, env, AXIS2_TRANSPORT_IN,
+ AXIS2_MSG_CTX_GET_PROPERTY(msg_ctx, env, AXIS2_TRANSPORT_IN,
+ AXIS2_FALSE), AXIS2_FALSE);
+ AXIS2_MSG_CTX_SET_SVC_CTX(res_msg_ctx, env, AXIS2_MSG_CTX_GET_SVC_CTX(
+ msg_ctx, env));
+ AXIS2_MSG_CTX_SET_SVC_GRP_CTX(res_msg_ctx, env,
+ AXIS2_MSG_CTX_GET_SVC_GRP_CTX(msg_ctx, env));
+ req_op_ctx = AXIS2_MSG_CTX_GET_OP_CTX(msg_ctx, env);
+ if(NULL != req_op_ctx)
+ {
+ axis2_ctx_t *ctx = NULL;
+ ctx = AXIS2_OP_CTX_GET_BASE(req_op_ctx, env);
+ if(NULL != AXIS2_CTX_GET_PROPERTY(ctx, env, MTOM_RECIVED_CONTENT_TYPE,
+ AXIS2_FALSE))
+ {
+ AXIS2_MSG_CTX_SET_PROPERTY(res_msg_ctx, env,
+ MTOM_RECIVED_CONTENT_TYPE, AXIS2_CTX_GET_PROPERTY(ctx, env,
+ MTOM_RECIVED_CONTENT_TYPE, AXIS2_FALSE), AXIS2_FALSE);
+ }
+ if(NULL != AXIS2_CTX_GET_PROPERTY(ctx, env, AXIS2_HTTP_CHAR_SET_ENCODING,
+ AXIS2_FALSE))
+ {
+ AXIS2_MSG_CTX_SET_PROPERTY(res_msg_ctx, env,
+ AXIS2_HTTP_CHAR_SET_ENCODING, AXIS2_CTX_GET_PROPERTY(ctx, env,
+ AXIS2_HTTP_CHAR_SET_ENCODING, AXIS2_FALSE), AXIS2_FALSE);
+ }
+ }
+ AXIS2_MSG_CTX_SET_DOING_REST(res_msg_ctx, env, AXIS2_MSG_CTX_GET_DOING_REST(
+ msg_ctx, env));
+ soap_ns_uri = AXIS2_MSG_CTX_GET_IS_SOAP_11(msg_ctx, env) ?
+ AXIOM_SOAP11_SOAP_ENVELOPE_NAMESPACE_URI:
+ AXIOM_SOAP12_SOAP_ENVELOPE_NAMESPACE_URI;
+
+ res_envelope = axis2_http_transport_utils_create_soap_msg(env, msg_ctx,
+ soap_ns_uri);
+
+ AXIS2_MSG_CTX_SET_PROPERTY(res_msg_ctx, env, SANDESHA2_WITHIN_TRANSACTION,
+ AXIS2_MSG_CTX_GET_PROPERTY(msg_ctx, env,
+ SANDESHA2_WITHIN_TRANSACTION, AXIS2_FALSE), AXIS2_FALSE);
+ if(NULL != res_envelope)
+ {
+ axis2_engine_t *engine = NULL;
+ AXIS2_MSG_CTX_SET_SOAP_ENVELOPE(res_msg_ctx, env, res_envelope);
+
+ engine = axis2_engine_create(env, AXIS2_MSG_CTX_GET_CONF_CTX(msg_ctx,
+ env));
+ if(AXIS2_FALSE == sandesha2_sender_is_fault_envelope(sender, env,
+ res_envelope))
+ AXIS2_ENGINE_RECIEVE_FAULT(engine, env, res_msg_ctx);
+ else
+ AXIS2_ENGINE_RECIEVE(engine, env, res_msg_ctx);
+ }
return AXIS2_SUCCESS;
}
@@ -320,9 +388,11 @@
{
AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-
- return AXIS2_FALSE;
+ if(SANDESHA2_MSG_TYPE_ACK == msg_type)
+ return AXIS2_FALSE;
+
+ return AXIS2_TRUE;
}
axis2_bool_t AXIS2_CALL
@@ -334,6 +404,9 @@
AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
AXIS2_PARAM_CHECK(env->error, rm_msg_ctx, AXIS2_FAILURE);
+ if(NULL != SANDESHA2_MSG_CTX_GET_MSG_PART(rm_msg_ctx, env,
+ SANDESHA2_MSG_PART_SEQ_ACKNOWLEDGEMENT))
+ return AXIS2_TRUE;
return AXIS2_FALSE;
}
@@ -344,10 +417,15 @@
const axis2_env_t *env,
axiom_soap_envelope_t *soap_envelope)
{
+ axiom_soap_fault_t *fault = NULL;
AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
AXIS2_PARAM_CHECK(env->error, soap_envelope, AXIS2_FAILURE);
-
+ fault = AXIOM_SOAP_BODY_GET_FAULT(AXIOM_SOAP_ENVELOPE_GET_BODY(soap_envelope,
+ env), env);
+ if(NULL != fault)
+ return AXIS2_TRUE;
+
return AXIS2_FALSE;
}
@@ -361,18 +439,22 @@
sandesha2_sender_t *sender = NULL;
sandesha2_sender_args_t *args;
axis2_env_t *env = NULL;
+ sandesha2_storage_mgr_t *storage_mgr = NULL;
args = (sandesha2_sender_args_t*)data;
env = args->env;
sender_impl = args->impl;
sender = (sandesha2_sender_t*)sender_impl;
+ storage_mgr = sandesha2_utils_get_storage_mgr(env,
+ sender_impl->conf_ctx,
+ AXIS2_CONF_CTX_GET_CONF(sender_impl->conf_ctx, env));
+
while(AXIS2_TRUE == sender_impl->run_sender)
{
sandesha2_transaction_t *transaction = NULL;
/* Use when transaction handling is done
axis2_bool_t rollbacked = AXIS2_FALSE;*/
- sandesha2_storage_mgr_t *storage_mgr = NULL;
sandesha2_next_msg_mgr_t *next_msg_mgr = NULL;
sandesha2_sender_mgr_t *storage_map_mgr = NULL;
sandesha2_seq_property_mgr_t *seq_prop_mgr = NULL;
@@ -380,10 +462,7 @@
axis2_array_list_t *all_seq_list = NULL;
int i = 0;
- sleep(1);
- storage_mgr = sandesha2_utils_get_storage_mgr(env,
- sender_impl->conf_ctx,
- AXIS2_CONF_CTX_GET_CONF(sender_impl->conf_ctx, env));
+
next_msg_mgr = SANDESHA2_STORAGE_MGR_GET_NEXT_MSG_MGR(
storage_mgr, env);
storage_map_mgr = SANDESHA2_STORAGE_MGR_GET_STORAGE_MAP_MGR
---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org