Author: robbie
Date: Fri Jun 27 10:08:24 2014
New Revision: 1606012
URL: http://svn.apache.org/r1606012
Log:
PROTON-597: only release transport buffers if they are above a threshold
capacity
Modified:
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameParser.java
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportOutputAdaptor.java
Modified:
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameParser.java
URL:
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameParser.java?rev=1606012&r1=1606011&r2=1606012&view=diff
==============================================================================
---
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameParser.java
(original)
+++
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/FrameParser.java
Fri Jun 27 10:08:24 2014
@@ -516,8 +516,10 @@ class FrameParser implements TransportIn
{
if (_inputBuffer.hasRemaining()) {
_inputBuffer.compact();
- } else {
+ } else if (_inputBuffer.capacity() >
TransportImpl.BUFFER_RELEASE_THRESHOLD) {
_inputBuffer = null;
+ } else {
+ _inputBuffer.clear();
}
}
}
Modified:
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java
URL:
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java?rev=1606012&r1=1606011&r2=1606012&view=diff
==============================================================================
---
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java
(original)
+++
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java
Fri Jun 27 10:08:24 2014
@@ -17,8 +17,6 @@
package org.apache.qpid.proton.engine.impl;
-import static
org.apache.qpid.proton.engine.impl.ByteBufferUtils.newReadableBuffer;
-import static org.apache.qpid.proton.engine.impl.ByteBufferUtils.pour;
import static
org.apache.qpid.proton.engine.impl.ByteBufferUtils.pourArrayToBuffer;
import static
org.apache.qpid.proton.engine.impl.ByteBufferUtils.pourBufferToArray;
@@ -44,7 +42,6 @@ import org.apache.qpid.proton.amqp.trans
import org.apache.qpid.proton.codec.AMQPDefinedTypes;
import org.apache.qpid.proton.codec.DecoderImpl;
import org.apache.qpid.proton.codec.EncoderImpl;
-import org.apache.qpid.proton.codec.WritableBuffer;
import org.apache.qpid.proton.engine.Connection;
import org.apache.qpid.proton.engine.EndpointState;
import org.apache.qpid.proton.engine.Event;
@@ -65,7 +62,7 @@ public class TransportImpl extends Endpo
implements ProtonJTransport, FrameBody.FrameBodyHandler<Integer>,
FrameHandler, TransportOutputWriter
{
- private static final byte AMQP_FRAME_TYPE = 0;
+ static final int BUFFER_RELEASE_THRESHOLD =
Integer.getInteger("proton.transport_buffer_release_threshold", 4*1024);
private FrameParser _frameParser;
Modified:
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportOutputAdaptor.java
URL:
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportOutputAdaptor.java?rev=1606012&r1=1606011&r2=1606012&view=diff
==============================================================================
---
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportOutputAdaptor.java
(original)
+++
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportOutputAdaptor.java
Fri Jun 27 10:08:24 2014
@@ -57,19 +57,18 @@ class TransportOutputAdaptor implements
_output_done = _transportOutputWriter.writeInto(_outputBuffer);
_head.limit(_outputBuffer.position());
- if (_outputBuffer.position() == 0)
+ if (_outputBuffer.position() == 0 && _outputBuffer.capacity() >
TransportImpl.BUFFER_RELEASE_THRESHOLD)
{
release_buffers();
}
- if (_outputBuffer == null) {
- if (_output_done) {
- return Transport.END_OF_STREAM;
- } else {
- return 0;
- }
- } else {
- return _outputBuffer.position();
+ if (_output_done && (_outputBuffer == null || _outputBuffer.position()
== 0))
+ {
+ return Transport.END_OF_STREAM;
+ }
+ else
+ {
+ return _outputBuffer == null ? 0 : _outputBuffer.position();
}
}
@@ -89,7 +88,7 @@ class TransportOutputAdaptor implements
_outputBuffer.compact();
_head.position(0);
_head.limit(_outputBuffer.position());
- if (_outputBuffer.position() == 0) {
+ if (_outputBuffer.position() == 0 && _outputBuffer.capacity() >
TransportImpl.BUFFER_RELEASE_THRESHOLD) {
release_buffers();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]