From 0fb17bbed6930f3ec110bf87d5cd4f3b91e2bbc2 Mon Sep 17 00:00:00 2001 From: "Rafael H. Schloming" Date: Fri, 6 Jun 2008 03:39:03 +0000 Subject: QPID-1062: merge writes of separate frames within an assembly, use sync flag instead of sync command on message transfer git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@663813 13f79535-47bb-0310-9956-ffa450edef68 --- .../qpid/client/BasicMessageProducer_0_10.java | 24 ++++++++++++++-------- .../java/org/apache/qpidity/nclient/Session.java | 2 ++ 2 files changed, 18 insertions(+), 8 deletions(-) (limited to 'qpid/java/client') diff --git a/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer_0_10.java b/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer_0_10.java index 8f95c99ac6..0702a52783 100644 --- a/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer_0_10.java +++ b/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer_0_10.java @@ -206,16 +206,24 @@ public class BasicMessageProducer_0_10 extends BasicMessageProducer // send the message try { - ((AMQSession_0_10) getSession()).getQpidSession().messageTransfer(destination.getExchangeName().toString(), - message.get010Message(), - org.apache.qpidity.nclient.Session.TRANSFER_CONFIRM_MODE_NOT_REQUIRED, - org.apache.qpidity.nclient.Session.TRANSFER_ACQUIRE_MODE_PRE_ACQUIRE); - if(deliveryMode == DeliveryMode.PERSISTENT && getSession().getAMQConnection().getSyncPersistence()) + org.apache.qpidity.nclient.Session ssn = ((AMQSession_0_10) getSession()).getQpidSession(); + + // if true, we need to sync the delivery of this message + boolean sync = (deliveryMode == DeliveryMode.PERSISTENT && + getSession().getAMQConnection().getSyncPersistence()); + + if(sync) { - // we need to sync the delivery of this message - ((AMQSession_0_10) getSession()).getQpidSession().sync(); + ssn.setAutoSync(true); + } + ssn.messageTransfer(destination.getExchangeName().toString(), + message.get010Message(), + ssn.TRANSFER_CONFIRM_MODE_NOT_REQUIRED, + ssn.TRANSFER_ACQUIRE_MODE_PRE_ACQUIRE); + if (sync) + { + ssn.setAutoSync(false); } - } catch (IOException e) { diff --git a/qpid/java/client/src/main/java/org/apache/qpidity/nclient/Session.java b/qpid/java/client/src/main/java/org/apache/qpidity/nclient/Session.java index c4d80e0fee..717ea43654 100644 --- a/qpid/java/client/src/main/java/org/apache/qpidity/nclient/Session.java +++ b/qpid/java/client/src/main/java/org/apache/qpidity/nclient/Session.java @@ -71,6 +71,8 @@ public interface Session public byte[] getName(); + public void setAutoSync(boolean value); + //------------------------------------------------------ // Messaging methods // Producer -- cgit v1.2.1