You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2015/11/13 18:10:06 UTC
svn commit: r1714240 -
/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnection.java
Author: rgodfrey
Date: Fri Nov 13 17:10:06 2015
New Revision: 1714240
URL: http://svn.apache.org/viewvc?rev=1714240&view=rev
Log:
QPID-6840 : Address review comments from [~lorenz.quack]
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnection.java
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnection.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnection.java?rev=1714240&r1=1714239&r2=1714240&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnection.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnection.java Fri Nov 13 17:10:06 2015
@@ -245,31 +245,9 @@ public class NonBlockingConnection imple
_protocolEngine.setIOThread(Thread.currentThread());
_protocolEngine.setMessageAssignmentSuspended(true);
- if(_pendingIterator == null)
- {
- _pendingIterator = _protocolEngine.processPendingIterator();
- }
+ boolean processPendingComplete = processPending();
- while(_pendingIterator.hasNext())
- {
- long size = getBufferedSize();
- if(size >= _port.getNetworkBufferSize())
- {
- doWrite();
- long bytesWritten = size - getBufferedSize();
- if(bytesWritten < (_port.getNetworkBufferSize()/2))
- {
- break;
- }
- }
- else
- {
- final Runnable task = _pendingIterator.next();
- task.run();
- }
- }
-
- if (!_pendingIterator.hasNext())
+ if(processPendingComplete)
{
_pendingIterator = null;
_protocolEngine.setTransportBlockedForWriting(false);
@@ -326,6 +304,43 @@ public class NonBlockingConnection imple
}
+ private boolean processPending() throws IOException
+ {
+ if(_pendingIterator == null)
+ {
+ _pendingIterator = _protocolEngine.processPendingIterator();
+ }
+
+ final int networkBufferSize = _port.getNetworkBufferSize();
+
+ while(_pendingIterator.hasNext())
+ {
+ long size = getBufferedSize();
+ if(size >= networkBufferSize)
+ {
+ doWrite();
+ long bytesWritten = size - getBufferedSize();
+ if(bytesWritten < (networkBufferSize /2))
+ {
+ break;
+ }
+ }
+ else
+ {
+ final Runnable task = _pendingIterator.next();
+ task.run();
+ }
+ }
+
+ boolean processPendingAndReads = !_pendingIterator.hasNext();
+ if (getBufferedSize() >= networkBufferSize)
+ {
+ doWrite();
+ processPendingAndReads &= getBufferedSize() < networkBufferSize /2;
+ }
+ return processPendingAndReads;
+ }
+
private long getBufferedSize()
{
long totalSize = 0l;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org