Author: robbie
Date: Fri Jun 27 10:08:06 2014
New Revision: 1606011
URL: http://svn.apache.org/r1606011
Log:
PROTON-597: remove use of the scratch buffer which will always be 512bytes due
to minMaxFrameSize, and instead write bytes straight to the output buffer
Modified:
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/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=1606011&r1=1606010&r2=1606011&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:06 2014
@@ -30,7 +30,6 @@ class TransportOutputAdaptor implements
private final TransportOutputWriter _transportOutputWriter;
private final int _maxFrameSize;
- private final ByteBuffer _scratchBuffer;
private ByteBuffer _outputBuffer = null;
private ByteBuffer _head = null;
@@ -41,7 +40,6 @@ class TransportOutputAdaptor implements
{
_transportOutputWriter = transportOutputWriter;
_maxFrameSize = maxFrameSize > 0 ? maxFrameSize : 4*1024;
- _scratchBuffer = newWriteableBuffer(Math.min(512, _maxFrameSize));
}
@Override
@@ -51,9 +49,16 @@ class TransportOutputAdaptor implements
return Transport.END_OF_STREAM;
}
- try_fill_buffer();
+ if(_outputBuffer == null)
+ {
+ init_buffers();
+ }
- if (_outputBuffer != null && _outputBuffer.position() == 0) {
+ _output_done = _transportOutputWriter.writeInto(_outputBuffer);
+ _head.limit(_outputBuffer.position());
+
+ if (_outputBuffer.position() == 0)
+ {
release_buffers();
}
@@ -108,32 +113,4 @@ class TransportOutputAdaptor implements
_head = null;
_outputBuffer = null;
}
-
- private void try_fill_buffer() {
- boolean done = false;
- while (!done) {
- reset_scratch_buffer();
- _output_done |= _transportOutputWriter.writeInto(_scratchBuffer);
- done = _scratchBuffer.position() < _scratchBuffer.capacity();
- if (_scratchBuffer.position() > 0) {
- copy_scratch_to_output();
- }
- }
- }
-
- private void reset_scratch_buffer() {
- _scratchBuffer.clear();
- if (_outputBuffer != null) {
- _scratchBuffer.limit(Math.min(_scratchBuffer.capacity(),
_outputBuffer.capacity() - _outputBuffer.position()));
- }
- }
-
- private void copy_scratch_to_output() {
- if (_outputBuffer == null) {
- init_buffers();
- }
- _scratchBuffer.flip();
- _outputBuffer.put(_scratchBuffer);
- _head.limit(_outputBuffer.position());
- }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]