You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ta...@apache.org on 2015/01/28 00:11:42 UTC

qpid-jms git commit: Delegate the send buffer allocation to the Transport so it can use the configured Netty allocator.

Repository: qpid-jms
Updated Branches:
  refs/heads/master a9f17a890 -> 05fb16ec8


Delegate the send buffer allocation to the Transport so it can use the
configured Netty allocator.

Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/05fb16ec
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/05fb16ec
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/05fb16ec

Branch: refs/heads/master
Commit: 05fb16ec8a03c5d4aa614df9f5abc4c7144cf435
Parents: a9f17a8
Author: Timothy Bish <ta...@gmail.com>
Authored: Tue Jan 27 18:11:35 2015 -0500
Committer: Timothy Bish <ta...@gmail.com>
Committed: Tue Jan 27 18:11:35 2015 -0500

----------------------------------------------------------------------
 .../apache/qpid/jms/provider/amqp/AmqpProvider.java    | 10 ++++------
 .../java/org/apache/qpid/jms/transports/Transport.java | 13 +++++++++++++
 .../qpid/jms/transports/netty/NettyTcpTransport.java   |  6 ++++++
 3 files changed, 23 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/05fb16ec/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProvider.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProvider.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProvider.java
index cd068ef..05637cc 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProvider.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProvider.java
@@ -18,7 +18,6 @@ package org.apache.qpid.jms.provider.amqp;
 
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.ByteBufUtil;
-import io.netty.buffer.Unpooled;
 import io.netty.util.ReferenceCountUtil;
 
 import java.io.IOException;
@@ -784,15 +783,14 @@ public class AmqpProvider implements Provider, TransportListener {
             while (!done) {
                 ByteBuffer toWrite = protonTransport.getOutputBuffer();
                 if (toWrite != null && toWrite.hasRemaining()) {
-                    byte[] bytes = new byte[toWrite.remaining()];
-                    toWrite.get(bytes);
-                    ByteBuf copy = Unpooled.wrappedBuffer(bytes);
+                    ByteBuf outbound = transport.allocateSendBuffer(toWrite.remaining());
+                    outbound.writeBytes(toWrite);
 
                     if (isTraceBytes()) {
-                        TRACE_BYTES.info("Sending: {}", ByteBufUtil.hexDump(copy));
+                        TRACE_BYTES.info("Sending: {}", ByteBufUtil.hexDump(outbound));
                     }
 
-                    transport.send(copy);
+                    transport.send(outbound);
                     protonTransport.outputConsumed();
                 } else {
                     done = true;

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/05fb16ec/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/Transport.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/Transport.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/Transport.java
index 6a723b7..99b3470 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/Transport.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/Transport.java
@@ -47,6 +47,19 @@ public interface Transport {
     void close() throws IOException;
 
     /**
+     * Request that the Transport provide an output buffer sized for the given
+     * value.
+     *
+     * @param size
+     *        the size necessary to hold the outgoing bytes.
+     *
+     * @return a new ByteBuf allocated for sends operations.
+     *
+     * @throws IOException if an error occurs while allocating the send buffer.
+     */
+    ByteBuf allocateSendBuffer(int size) throws IOException;
+
+    /**
      * Sends a chunk of data over the Transport connection.
      *
      * @param output

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/05fb16ec/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/netty/NettyTcpTransport.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/netty/NettyTcpTransport.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/netty/NettyTcpTransport.java
index 89355d6..75b0f75 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/netty/NettyTcpTransport.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/netty/NettyTcpTransport.java
@@ -162,6 +162,12 @@ public class NettyTcpTransport implements Transport {
     }
 
     @Override
+    public ByteBuf allocateSendBuffer(int size) throws IOException {
+        checkConnected();
+        return channel.alloc().ioBuffer(size, size);
+    }
+
+    @Override
     public void send(ByteBuf output) throws IOException {
         checkConnected();
         int length = output.readableBytes();


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org