Repository: qpid-jms
Updated Branches:
  refs/heads/master 498fd7651 -> 8dd97074a


QPIDJMS-379 Don't create duplicates for processing incoming bytes

Avoid nioBuffer on netty buffer and don't duplicate the tail buffer,
just let netty write into it in the most efficient manner based on what
is backing the netty buffer.


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

Branch: refs/heads/master
Commit: 8dd97074a60317062ab3cdbf9651ebecaa3d81db
Parents: 498fd76
Author: Timothy Bish <[email protected]>
Authored: Tue Apr 17 13:05:55 2018 -0400
Committer: Timothy Bish <[email protected]>
Committed: Tue Apr 17 13:05:55 2018 -0400

----------------------------------------------------------------------
 .../qpid/jms/provider/amqp/AmqpProvider.java       | 17 ++++++-----------
 1 file changed, 6 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/8dd97074/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 97bdddf..916e87c 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
@@ -812,17 +812,13 @@ public class AmqpProvider implements Provider, 
TransportListener , AmqpResourceP
                         TRACE_BYTES.info("Received: {}", 
ByteBufUtil.hexDump(input));
                     }
 
-                    ByteBuffer source = input.nioBuffer();
-
                     do {
-                        ByteBuffer buffer = protonTransport.getInputBuffer();
-                        int limit = Math.min(buffer.remaining(), 
source.remaining());
-                        ByteBuffer duplicate = source.duplicate();
-                        duplicate.limit(source.position() + limit);
-                        buffer.put(duplicate);
-                        protonTransport.processInput().checkIsOk();
-                        source.position(source.position() + limit);
-                    } while (source.hasRemaining());
+                        ByteBuffer buffer = protonTransport.tail();
+                        int chunkSize = Math.min(buffer.remaining(), 
input.readableBytes());
+                        buffer.limit(buffer.position() + chunkSize);
+                        input.readBytes(buffer);
+                        protonTransport.process();
+                    } while (input.isReadable());
 
                     ReferenceCountUtil.release(input);
 
@@ -832,7 +828,6 @@ public class AmqpProvider implements Provider, 
TransportListener , AmqpResourceP
                     pumpToProtonTransport();
                 } catch (Throwable t) {
                     LOG.warn("Caught problem during data processing: {}", 
t.getMessage(), t);
-
                     fireProviderException(t);
                 }
             }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to