summaryrefslogtreecommitdiffstats
path: root/src/core/transport
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/transport')
-rw-r--r--src/core/transport/amqp/sender/qpid_sender/axis2_qpid_sender.cpp484
-rw-r--r--src/core/transport/amqp/sender/qpid_sender/axis2_qpid_sender.h30
-rw-r--r--src/core/transport/amqp/sender/qpid_sender/axis2_qpid_sender_interface.cpp260
3 files changed, 387 insertions, 387 deletions
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