You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kw...@apache.org on 2016/10/06 06:29:52 UTC
svn commit: r1763499 -
/qpid/java/trunk/common/src/main/java/org/apache/qpid/bytebuffer/QpidByteBuffer.java
Author: kwall
Date: Thu Oct 6 06:29:52 2016
New Revision: 1763499
URL: http://svn.apache.org/viewvc?rev=1763499&view=rev
Log:
QPID-7447: [Java Broker] Avoid empty iterator creation on SSL write path when no application data due to be written
Modified:
qpid/java/trunk/common/src/main/java/org/apache/qpid/bytebuffer/QpidByteBuffer.java
Modified: qpid/java/trunk/common/src/main/java/org/apache/qpid/bytebuffer/QpidByteBuffer.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/common/src/main/java/org/apache/qpid/bytebuffer/QpidByteBuffer.java?rev=1763499&r1=1763498&r2=1763499&view=diff
==============================================================================
--- qpid/java/trunk/common/src/main/java/org/apache/qpid/bytebuffer/QpidByteBuffer.java (original)
+++ qpid/java/trunk/common/src/main/java/org/apache/qpid/bytebuffer/QpidByteBuffer.java Thu Oct 6 06:29:52 2016
@@ -52,6 +52,7 @@ public class QpidByteBuffer
QpidByteBuffer.class,
"_disposed");
private static final ThreadLocal<QpidByteBuffer> _cachedBuffer = new ThreadLocal<>();
+ private static final ByteBuffer[] EMPTY_BYTE_BUFFER_ARRAY = new ByteBuffer[0];
private volatile static boolean _isPoolInitialized;
private volatile static BufferPool _bufferPool;
private volatile static int _pooledBufferSize;
@@ -647,11 +648,19 @@ public class QpidByteBuffer
final Collection<QpidByteBuffer> buffers,
QpidByteBuffer dest) throws SSLException
{
- final ByteBuffer[] src = new ByteBuffer[buffers.size()];
- Iterator<QpidByteBuffer> iterator = buffers.iterator();
- for (int i = 0; i < src.length; i++)
+ final ByteBuffer[] src;
+ if (buffers.isEmpty())
{
- src[i] = iterator.next().getUnderlyingBuffer();
+ src = EMPTY_BYTE_BUFFER_ARRAY;
+ }
+ else
+ {
+ src = new ByteBuffer[buffers.size()];
+ Iterator<QpidByteBuffer> iterator = buffers.iterator();
+ for (int i = 0; i < src.length; i++)
+ {
+ src[i] = iterator.next().getUnderlyingBuffer();
+ }
}
return engine.wrap(src, dest.getUnderlyingBuffer());
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org