From 432f2e2eb65a1746fc5e14ad91c0b97a366d1916 Mon Sep 17 00:00:00 2001
From: nandika
Date: Wed, 18 Aug 2010 14:45:56 +0000
Subject: license added

git-svn-id: http://svn.apache.org/repos/asf/axis/axis2/c/core/trunk@986711 13f79535-47bb-0310-9956-ffa450edef68
---
 .../amqp/sender/qpid_sender/axis2_qpid_sender.cpp  | 484 ++++++++++-----------
 .../amqp/sender/qpid_sender/axis2_qpid_sender.h    |  30 +-
 .../qpid_sender/axis2_qpid_sender_interface.cpp    | 260 +++++------
 3 files changed, 387 insertions(+), 387 deletions(-)

(limited to 'src/core/transport')

diff --git a/src/core/transport/amqp/sender/qpid_sender/axis2_qpid_sender.cpp b/src/core/transport/amqp/sender/qpid_sender/axis2_qpid_sender.cpp
index 7f0799b..ed4dc19 100644
--- a/src/core/transport/amqp/sender/qpid_sender/axis2_qpid_sender.cpp
+++ b/src/core/transport/amqp/sender/qpid_sender/axis2_qpid_sender.cpp
@@ -1,242 +1,242 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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
- *
- *      tcp://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 <qpid/client/Connection.h>
-#include <qpid/client/Session.h>
-#include <qpid/client/Message.h>
-#include <qpid/client/SubscriptionManager.h>
-#include <qpid/sys/Time.h>
-#include <axis2_amqp_defines.h>
-#include <axiom_mime_part.h>
-#include <axis2_qpid_sender.h>
-#include <fstream>
-
-using namespace std;
-using namespace qpid::client;
-using namespace qpid::framing;
-
-Axis2QpidSender::Axis2QpidSender(
-    string qpidBrokerIP,
-    int qpidBrokerPort,
-    const axutil_env_t* env)
-{
-    this->qpidBrokerIP = qpidBrokerIP;
-    this->qpidBrokerPort = qpidBrokerPort;
-    this->env = env;
-    this->responseContent = "";
-    this->responseContentType = "";
-}
-
-Axis2QpidSender::~Axis2QpidSender(
-    void)
-{
-}
-
-bool
-Axis2QpidSender::SendReceive(
-    string messageContent,
-    string toQueueName,
-    bool isSOAP11,
-    string contentType,
-    string soapAction,
-    axutil_array_list_t* mime_parts,
-    int timeout)
-{
-    bool status = false;
-    this->responseContent = "";
-    this->responseContentType = "";
-
-    try
-    {
-        Connection connection;
-        connection.open(qpidBrokerIP, qpidBrokerPort);
-
-        Session session = connection.newSession();
-
-        /* Declare Private Queue */
-        string replyToQueueName = AXIS2_AMQP_TEMP_QUEUE_NAME_PREFIX;
-        replyToQueueName.append(axutil_uuid_gen(env));
-
-        session.queueDeclare(arg::queue = replyToQueueName, arg::autoDelete = true);
-        session.exchangeBind(arg::exchange = AXIS2_AMQP_EXCHANGE_DIRECT, arg::queue
-            = replyToQueueName, arg::bindingKey = replyToQueueName);
-
-        /* Create Message */
-        Message reqMessage;
-
-        reqMessage.getDeliveryProperties().setRoutingKey(toQueueName);
-        reqMessage.getMessageProperties().setReplyTo(ReplyTo(AXIS2_AMQP_EXCHANGE_DIRECT,
-            replyToQueueName));
-
-        reqMessage.getHeaders().setString(AXIS2_AMQP_HEADER_CONTENT_TYPE, contentType);
-        reqMessage.getHeaders().setString(AXIS2_AMQP_HEADER_SOAP_ACTION, soapAction);
-
-        if(mime_parts)
-        {
-            string mimeBody;
-            GetMimeBody(mime_parts, mimeBody);
-
-            messageContent.clear();/* MIME parts include SOAP envelop */
-
-            messageContent.append(mimeBody);
-        }
-
-        reqMessage.setData(messageContent);
-
-        session.messageTransfer(arg::content = reqMessage, arg::destination
-            = AXIS2_AMQP_EXCHANGE_DIRECT);
-
-        /* Create subscription manager */
-        SubscriptionManager subscriptionManager(session);
-
-        Message resMessage;
-        qpid::sys::Duration reqTimeout(timeout * AXIS2_AMQP_NANOSEC_PER_MILLISEC);
-
-        if(subscriptionManager.get(resMessage, replyToQueueName, reqTimeout))
-        {
-            responseContent = resMessage.getData();
-            responseContentType = resMessage.getHeaders().getAsString(
-                AXIS2_AMQP_HEADER_CONTENT_TYPE);
-
-            status = true;
-        }
-
-        connection.close();
-    }
-    catch(const std::exception& e)
-    {
-    }
-
-    return status;
-}
-
-bool
-Axis2QpidSender::Send(
-    string messageContent,
-    string toQueueName,
-    string replyToQueueName,
-    bool isSOAP11,
-    string contentType,
-    string soapAction,
-    axutil_array_list_t* mime_parts)
-{
-    bool status = false;
-
-    try
-    {
-        Connection connection;
-        connection.open(qpidBrokerIP, qpidBrokerPort);
-
-        Session session = connection.newSession();
-
-        /* Create Message */
-        Message message;
-
-        message.getDeliveryProperties().setRoutingKey(toQueueName);
-
-        if(!replyToQueueName.empty()) /* Client dual-channel */
-        {
-            message.getMessageProperties().setReplyTo(ReplyTo(AXIS2_AMQP_EXCHANGE_DIRECT,
-                replyToQueueName));
-
-            session.queueDeclare(arg::queue = replyToQueueName);
-            session.exchangeBind(arg::exchange = AXIS2_AMQP_EXCHANGE_DIRECT, arg::queue
-                = replyToQueueName, arg::bindingKey = replyToQueueName);
-        }
-
-        message.getHeaders().setString(AXIS2_AMQP_HEADER_CONTENT_TYPE, contentType);
-        message.getHeaders().setString(AXIS2_AMQP_HEADER_SOAP_ACTION, soapAction);
-
-        if(mime_parts)
-        {
-            string mimeBody;
-            GetMimeBody(mime_parts, mimeBody);
-
-            messageContent.clear();/* MIME parts include SOAP envelop */
-
-            messageContent.append(mimeBody);
-        }
-
-        message.setData(messageContent);
-
-        session.messageTransfer(arg::content = message, arg::destination
-            = AXIS2_AMQP_EXCHANGE_DIRECT);
-
-        connection.close();
-
-        status = true;
-    }
-    catch(const std::exception& e)
-    {
-    }
-
-    return status;
-}
-
-void
-Axis2QpidSender::GetMimeBody(
-    axutil_array_list_t* mime_parts,
-    string& mimeBody)
-{
-    int i = 0;
-    axiom_mime_part_t *mime_part = NULL;
-    axis2_status_t status = AXIS2_SUCCESS;
-
-    if(!mime_parts)
-        return;
-
-    for(i = 0; i < axutil_array_list_size(mime_parts, env); i++)
-    {
-        mime_part = (axiom_mime_part_t *)axutil_array_list_get(mime_parts, env, i);
-
-        if(mime_part->type == AXIOM_MIME_PART_BUFFER)
-        {
-            mimeBody.append(mime_part->part, mime_part->part_size);
-        }
-        else if(mime_part->type == AXIOM_MIME_PART_FILE)
-        {
-            int length;
-            char* buffer;
-
-            ifstream file;
-            file.open(mime_part->file_name, ios::binary);
-
-            file.seekg(0, ios::end);
-            length = file.tellg();
-            file.seekg(0, ios::beg);
-
-            buffer = new char[length];
-
-            file.read(buffer, length);
-            file.close();
-
-            mimeBody.append(buffer, length);
-
-            delete[] buffer;
-        }
-        else
-        {
-            AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Unknown mime type");
-            return;
-        }
-
-        if(status == AXIS2_FAILURE)
-        {
-            break;
-        }
-    }
-}
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 <qpid/client/Connection.h>
+#include <qpid/client/Session.h>
+#include <qpid/client/Message.h>
+#include <qpid/client/SubscriptionManager.h>
+#include <qpid/sys/Time.h>
+#include <axis2_amqp_defines.h>
+#include <axiom_mime_part.h>
+#include <axis2_qpid_sender.h>
+#include <fstream>
+
+using namespace std;
+using namespace qpid::client;
+using namespace qpid::framing;
+
+Axis2QpidSender::Axis2QpidSender(
+    string qpidBrokerIP,
+    int qpidBrokerPort,
+    const axutil_env_t* env)
+{
+    this->qpidBrokerIP = qpidBrokerIP;
+    this->qpidBrokerPort = qpidBrokerPort;
+    this->env = env;
+    this->responseContent = "";
+    this->responseContentType = "";
+}
+
+Axis2QpidSender::~Axis2QpidSender(
+    void)
+{
+}
+
+bool
+Axis2QpidSender::SendReceive(
+    string messageContent,
+    string toQueueName,
+    bool isSOAP11,
+    string contentType,
+    string soapAction,
+    axutil_array_list_t* mime_parts,
+    int timeout)
+{
+    bool status = false;
+    this->responseContent = "";
+    this->responseContentType = "";
+
+    try
+    {
+        Connection connection;
+        connection.open(qpidBrokerIP, qpidBrokerPort);
+
+        Session session = connection.newSession();
+
+        /* Declare Private Queue */
+        string replyToQueueName = AXIS2_AMQP_TEMP_QUEUE_NAME_PREFIX;
+        replyToQueueName.append(axutil_uuid_gen(env));
+
+        session.queueDeclare(arg::queue = replyToQueueName, arg::autoDelete = true);
+        session.exchangeBind(arg::exchange = AXIS2_AMQP_EXCHANGE_DIRECT, arg::queue
+            = replyToQueueName, arg::bindingKey = replyToQueueName);
+
+        /* Create Message */
+        Message reqMessage;
+
+        reqMessage.getDeliveryProperties().setRoutingKey(toQueueName);
+        reqMessage.getMessageProperties().setReplyTo(ReplyTo(AXIS2_AMQP_EXCHANGE_DIRECT,
+            replyToQueueName));
+
+        reqMessage.getHeaders().setString(AXIS2_AMQP_HEADER_CONTENT_TYPE, contentType);
+        reqMessage.getHeaders().setString(AXIS2_AMQP_HEADER_SOAP_ACTION, soapAction);
+
+        if(mime_parts)
+        {
+            string mimeBody;
+            GetMimeBody(mime_parts, mimeBody);
+
+            messageContent.clear();/* MIME parts include SOAP envelop */
+
+            messageContent.append(mimeBody);
+        }
+
+        reqMessage.setData(messageContent);
+
+        session.messageTransfer(arg::content = reqMessage, arg::destination
+            = AXIS2_AMQP_EXCHANGE_DIRECT);
+
+        /* Create subscription manager */
+        SubscriptionManager subscriptionManager(session);
+
+        Message resMessage;
+        qpid::sys::Duration reqTimeout(timeout * AXIS2_AMQP_NANOSEC_PER_MILLISEC);
+
+        if(subscriptionManager.get(resMessage, replyToQueueName, reqTimeout))
+        {
+            responseContent = resMessage.getData();
+            responseContentType = resMessage.getHeaders().getAsString(
+                AXIS2_AMQP_HEADER_CONTENT_TYPE);
+
+            status = true;
+        }
+
+        connection.close();
+    }
+    catch(const std::exception& e)
+    {
+    }
+
+    return status;
+}
+
+bool
+Axis2QpidSender::Send(
+    string messageContent,
+    string toQueueName,
+    string replyToQueueName,
+    bool isSOAP11,
+    string contentType,
+    string soapAction,
+    axutil_array_list_t* mime_parts)
+{
+    bool status = false;
+
+    try
+    {
+        Connection connection;
+        connection.open(qpidBrokerIP, qpidBrokerPort);
+
+        Session session = connection.newSession();
+
+        /* Create Message */
+        Message message;
+
+        message.getDeliveryProperties().setRoutingKey(toQueueName);
+
+        if(!replyToQueueName.empty()) /* Client dual-channel */
+        {
+            message.getMessageProperties().setReplyTo(ReplyTo(AXIS2_AMQP_EXCHANGE_DIRECT,
+                replyToQueueName));
+
+            session.queueDeclare(arg::queue = replyToQueueName);
+            session.exchangeBind(arg::exchange = AXIS2_AMQP_EXCHANGE_DIRECT, arg::queue
+                = replyToQueueName, arg::bindingKey = replyToQueueName);
+        }
+
+        message.getHeaders().setString(AXIS2_AMQP_HEADER_CONTENT_TYPE, contentType);
+        message.getHeaders().setString(AXIS2_AMQP_HEADER_SOAP_ACTION, soapAction);
+
+        if(mime_parts)
+        {
+            string mimeBody;
+            GetMimeBody(mime_parts, mimeBody);
+
+            messageContent.clear();/* MIME parts include SOAP envelop */
+
+            messageContent.append(mimeBody);
+        }
+
+        message.setData(messageContent);
+
+        session.messageTransfer(arg::content = message, arg::destination
+            = AXIS2_AMQP_EXCHANGE_DIRECT);
+
+        connection.close();
+
+        status = true;
+    }
+    catch(const std::exception& e)
+    {
+    }
+
+    return status;
+}
+
+void
+Axis2QpidSender::GetMimeBody(
+    axutil_array_list_t* mime_parts,
+    string& mimeBody)
+{
+    int i = 0;
+    axiom_mime_part_t *mime_part = NULL;
+    axis2_status_t status = AXIS2_SUCCESS;
+
+    if(!mime_parts)
+        return;
+
+    for(i = 0; i < axutil_array_list_size(mime_parts, env); i++)
+    {
+        mime_part = (axiom_mime_part_t *)axutil_array_list_get(mime_parts, env, i);
+
+        if(mime_part->type == AXIOM_MIME_PART_BUFFER)
+        {
+            mimeBody.append(mime_part->part, mime_part->part_size);
+        }
+        else if(mime_part->type == AXIOM_MIME_PART_FILE)
+        {
+            int length;
+            char* buffer;
+
+            ifstream file;
+            file.open(mime_part->file_name, ios::binary);
+
+            file.seekg(0, ios::end);
+            length = file.tellg();
+            file.seekg(0, ios::beg);
+
+            buffer = new char[length];
+
+            file.read(buffer, length);
+            file.close();
+
+            mimeBody.append(buffer, length);
+
+            delete[] buffer;
+        }
+        else
+        {
+            AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Unknown mime type");
+            return;
+        }
+
+        if(status == AXIS2_FAILURE)
+        {
+            break;
+        }
+    }
+}
diff --git a/src/core/transport/amqp/sender/qpid_sender/axis2_qpid_sender.h b/src/core/transport/amqp/sender/qpid_sender/axis2_qpid_sender.h
index e797c71..f87a29e 100644
--- a/src/core/transport/amqp/sender/qpid_sender/axis2_qpid_sender.h
+++ b/src/core/transport/amqp/sender/qpid_sender/axis2_qpid_sender.h
@@ -1,19 +1,19 @@
 /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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
- *
- *      tcp://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.
- */
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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.
+*/
 
 #ifndef AXIS2_QPID_SENDER_H
 #define AXIS2_QPID_SENDER_H
diff --git a/src/core/transport/amqp/sender/qpid_sender/axis2_qpid_sender_interface.cpp b/src/core/transport/amqp/sender/qpid_sender/axis2_qpid_sender_interface.cpp
index ac4f51e..72766ed 100644
--- a/src/core/transport/amqp/sender/qpid_sender/axis2_qpid_sender_interface.cpp
+++ b/src/core/transport/amqp/sender/qpid_sender/axis2_qpid_sender_interface.cpp
@@ -1,130 +1,130 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements.  See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You 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 <axis2_amqp_util.h>
-#include <axis2_qpid_sender.h>
-#include <axis2_qpid_sender_interface.h>
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-AXIS2_EXTERN axis2_amqp_response_t* AXIS2_CALL
-axis2_qpid_send_receive(
-	const axis2_char_t* request_content,
-	const axutil_env_t* env,
-	const axis2_char_t* content_type,
-	const axis2_char_t* soap_action,
-	axis2_msg_ctx_t* msg_ctx)
-{
-	axis2_amqp_destination_info_t* destination_info = NULL;
-	destination_info = axis2_amqp_util_msg_ctx_get_destination_info(msg_ctx, env);
-
-	if (!destination_info || !destination_info->broker_ip || 
-		!destination_info->broker_port || !destination_info->queue_name)
-	{
-		return NULL;
-	}
-
-	axis2_bool_t is_soap_11 = axis2_msg_ctx_get_is_soap_11(msg_ctx, env);
-	axutil_array_list_t* mime_parts = axis2_msg_ctx_get_mime_parts(msg_ctx, env);
-	int timeout = axis2_amqp_util_msg_ctx_get_request_timeout(msg_ctx, env);
-
-	/* Get Response */
-	Axis2QpidSender qpid_sender(destination_info->broker_ip, 
-			destination_info->broker_port, env);
-	
-	bool status = qpid_sender.SendReceive(request_content, destination_info->queue_name, 
-			is_soap_11, content_type, soap_action, mime_parts, timeout);
-
-	axis2_amqp_destination_info_free(destination_info, env);
-
-	if (!status)
-	{
-		return NULL;
-	}
-
-	/* Create response */
-	axis2_amqp_response_t* response = (axis2_amqp_response_t*)AXIS2_MALLOC(
-			env->allocator, sizeof(axis2_amqp_response_t));
-
-	/* Data */
-	response->data = AXIS2_MALLOC(env->allocator, qpid_sender.responseContent.size());
-	memcpy(response->data, qpid_sender.responseContent.c_str(), 
-			qpid_sender.responseContent.size());
-
-	/* Length */
-	response->length = qpid_sender.responseContent.size();
-
-	/* ContentType */
-	response->content_type = (axis2_char_t*)AXIS2_MALLOC(
-			env->allocator, qpid_sender.responseContentType.size() + 1);
-	strcpy(response->content_type, qpid_sender.responseContentType.c_str());
-
-	return response;
-}
-
-
-AXIS2_EXTERN axis2_status_t AXIS2_CALL
-axis2_qpid_send(
-	const axis2_char_t* request_content,
-	const axutil_env_t* env,
-	const axis2_char_t* content_type,
-	const axis2_char_t* soap_action,
-	axis2_msg_ctx_t* msg_ctx)
-{
-	axis2_amqp_destination_info_t* destination_info = NULL;
-	axis2_status_t status =  AXIS2_FAILURE;
-	string reply_to_queue_name = "";
-
-	destination_info = axis2_amqp_util_msg_ctx_get_destination_info(msg_ctx, env);
-
-	if (!destination_info || !destination_info->broker_ip || 
-		!destination_info->broker_port || !destination_info->queue_name)
-	{
-		return AXIS2_FAILURE;
-	}
-
-	axis2_bool_t is_soap_11 = axis2_msg_ctx_get_is_soap_11(msg_ctx, env);
-	axutil_array_list_t* mime_parts = axis2_msg_ctx_get_mime_parts(msg_ctx, env);
-
-	/* If client side, find reply_to_queue_name */
-	if (!axis2_msg_ctx_get_server_side(msg_ctx, env))
-	{
-		axis2_conf_ctx_t* conf_ctx = axis2_msg_ctx_get_conf_ctx(msg_ctx, env);
-
-		axis2_char_t* queue_name = 
-			axis2_amqp_util_conf_ctx_get_dual_channel_queue_name(conf_ctx, env);
-		if (queue_name)
-			reply_to_queue_name = queue_name;
-	}
-
-	Axis2QpidSender qpid_sender(destination_info->broker_ip, 
-			destination_info->broker_port, env);
-
-	status = qpid_sender.Send(request_content, destination_info->queue_name, 
-			reply_to_queue_name, is_soap_11, content_type, soap_action, mime_parts);
-
-	axis2_amqp_destination_info_free(destination_info, env);
-
-	return status;
-}
-
-#ifdef __cplusplus
-}
-#endif
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You 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 <axis2_amqp_util.h>
+#include <axis2_qpid_sender.h>
+#include <axis2_qpid_sender_interface.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+AXIS2_EXTERN axis2_amqp_response_t* AXIS2_CALL
+axis2_qpid_send_receive(
+	const axis2_char_t* request_content,
+	const axutil_env_t* env,
+	const axis2_char_t* content_type,
+	const axis2_char_t* soap_action,
+	axis2_msg_ctx_t* msg_ctx)
+{
+	axis2_amqp_destination_info_t* destination_info = NULL;
+	destination_info = axis2_amqp_util_msg_ctx_get_destination_info(msg_ctx, env);
+
+	if (!destination_info || !destination_info->broker_ip || 
+		!destination_info->broker_port || !destination_info->queue_name)
+	{
+		return NULL;
+	}
+
+	axis2_bool_t is_soap_11 = axis2_msg_ctx_get_is_soap_11(msg_ctx, env);
+	axutil_array_list_t* mime_parts = axis2_msg_ctx_get_mime_parts(msg_ctx, env);
+	int timeout = axis2_amqp_util_msg_ctx_get_request_timeout(msg_ctx, env);
+
+	/* Get Response */
+	Axis2QpidSender qpid_sender(destination_info->broker_ip, 
+			destination_info->broker_port, env);
+	
+	bool status = qpid_sender.SendReceive(request_content, destination_info->queue_name, 
+			is_soap_11, content_type, soap_action, mime_parts, timeout);
+
+	axis2_amqp_destination_info_free(destination_info, env);
+
+	if (!status)
+	{
+		return NULL;
+	}
+
+	/* Create response */
+	axis2_amqp_response_t* response = (axis2_amqp_response_t*)AXIS2_MALLOC(
+			env->allocator, sizeof(axis2_amqp_response_t));
+
+	/* Data */
+	response->data = AXIS2_MALLOC(env->allocator, qpid_sender.responseContent.size());
+	memcpy(response->data, qpid_sender.responseContent.c_str(), 
+			qpid_sender.responseContent.size());
+
+	/* Length */
+	response->length = qpid_sender.responseContent.size();
+
+	/* ContentType */
+	response->content_type = (axis2_char_t*)AXIS2_MALLOC(
+			env->allocator, qpid_sender.responseContentType.size() + 1);
+	strcpy(response->content_type, qpid_sender.responseContentType.c_str());
+
+	return response;
+}
+
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+axis2_qpid_send(
+	const axis2_char_t* request_content,
+	const axutil_env_t* env,
+	const axis2_char_t* content_type,
+	const axis2_char_t* soap_action,
+	axis2_msg_ctx_t* msg_ctx)
+{
+	axis2_amqp_destination_info_t* destination_info = NULL;
+	axis2_status_t status =  AXIS2_FAILURE;
+	string reply_to_queue_name = "";
+
+	destination_info = axis2_amqp_util_msg_ctx_get_destination_info(msg_ctx, env);
+
+	if (!destination_info || !destination_info->broker_ip || 
+		!destination_info->broker_port || !destination_info->queue_name)
+	{
+		return AXIS2_FAILURE;
+	}
+
+	axis2_bool_t is_soap_11 = axis2_msg_ctx_get_is_soap_11(msg_ctx, env);
+	axutil_array_list_t* mime_parts = axis2_msg_ctx_get_mime_parts(msg_ctx, env);
+
+	/* If client side, find reply_to_queue_name */
+	if (!axis2_msg_ctx_get_server_side(msg_ctx, env))
+	{
+		axis2_conf_ctx_t* conf_ctx = axis2_msg_ctx_get_conf_ctx(msg_ctx, env);
+
+		axis2_char_t* queue_name = 
+			axis2_amqp_util_conf_ctx_get_dual_channel_queue_name(conf_ctx, env);
+		if (queue_name)
+			reply_to_queue_name = queue_name;
+	}
+
+	Axis2QpidSender qpid_sender(destination_info->broker_ip, 
+			destination_info->broker_port, env);
+
+	status = qpid_sender.Send(request_content, destination_info->queue_name, 
+			reply_to_queue_name, is_soap_11, content_type, soap_action, mime_parts);
+
+	axis2_amqp_destination_info_free(destination_info, env);
+
+	return status;
+}
+
+#ifdef __cplusplus
+}
+#endif
-- 
cgit v1.1-32-gdbae