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]
