Author: orudyy
Date: Wed Nov 11 17:53:07 2015
New Revision: 1713904
URL: http://svn.apache.org/viewvc?rev=1713904&view=rev
Log:
QPID-6832: Use direct memory more efficiently in AMQP 1.0 impelementation
Modified:
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/amqp_1_0/codec/FrameWriter.java
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/amqp_1_0/framing/FrameHandler.java
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/AMQPConnection_1_0.java
Modified:
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/amqp_1_0/codec/FrameWriter.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/amqp_1_0/codec/FrameWriter.java?rev=1713904&r1=1713903&r2=1713904&view=diff
==============================================================================
---
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/amqp_1_0/codec/FrameWriter.java
(original)
+++
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/amqp_1_0/codec/FrameWriter.java
Wed Nov 11 17:53:07 2015
@@ -24,8 +24,6 @@ package org.apache.qpid.amqp_1_0.codec;
import org.apache.qpid.amqp_1_0.framing.AMQFrame;
import org.apache.qpid.bytebuffer.QpidByteBuffer;
-import java.nio.ByteBuffer;
-
public class FrameWriter implements ValueWriter<AMQFrame>
{
private Registry _registry;
@@ -82,7 +80,7 @@ public class FrameWriter implements Valu
if(_typeWriter!=null)
{
- _typeWriter.setValue(_frame.getFrameBody());
+
QpidByteBuffer qpidByteBuffer = remaining > 8
?
buffer.duplicate().position(buffer.position() + 8)
@@ -253,10 +251,6 @@ public class FrameWriter implements Valu
}
}
- if(_size == -1)
- {
- _size =
_typeWriter.writeToBuffer(QpidByteBuffer.wrap(EMPTY_BYTE_ARRAY)) + 8 +
(_payload == null ? 0 : _payload.remaining());
- }
return _size;
}
@@ -264,17 +258,26 @@ public class FrameWriter implements Valu
{
_frame = frame;
_state = State.SIZE_0;
- _size = -1;
- _payload = null;
+ _payload = frame.getPayload() == null ? null :
frame.getPayload().duplicate();
+
+ final int payloadLength = _payload == null ? 0 : _payload.remaining();
final Object frameBody = frame.getFrameBody();
- if(frameBody!=null)
+
+ _typeWriter = frameBody == null ? null :
_registry.getValueWriter(frameBody);
+ if (_typeWriter == null)
{
- _typeWriter = _registry.getValueWriter(frameBody);
+ _size = 8 + payloadLength;
}
else
{
- _typeWriter = null;
+ _typeWriter.setValue(_frame.getFrameBody());
+ QpidByteBuffer qpidByteBuffer =
QpidByteBuffer.wrap(EMPTY_BYTE_ARRAY);
+ _size = _typeWriter.writeToBuffer(qpidByteBuffer) + 8 +
payloadLength;
}
- _payload = frame.getPayload() == null ? null :
frame.getPayload().duplicate();
+ }
+
+ public int getSize()
+ {
+ return _size;
}
}
Modified:
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/amqp_1_0/framing/FrameHandler.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/amqp_1_0/framing/FrameHandler.java?rev=1713904&r1=1713903&r2=1713904&view=diff
==============================================================================
---
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/amqp_1_0/framing/FrameHandler.java
(original)
+++
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/amqp_1_0/framing/FrameHandler.java
Wed Nov 11 17:53:07 2015
@@ -235,10 +235,7 @@ public class FrameHandler implements Pro
{
if(val instanceof Transfer)
{
- QpidByteBuffer buf =
QpidByteBuffer.allocateDirect(in.remaining());
- buf.put(in);
- buf.flip();
- ((Transfer)val).setPayload(buf);
+ ((Transfer)val).setPayload(in.slice());
}
}
Modified:
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/AMQPConnection_1_0.java
URL:
http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/AMQPConnection_1_0.java?rev=1713904&r1=1713903&r2=1713904&view=diff
==============================================================================
---
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/AMQPConnection_1_0.java
(original)
+++
qpid/java/trunk/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/AMQPConnection_1_0.java
Wed Nov 11 17:53:07 2015
@@ -498,7 +498,7 @@ public class AMQPConnection_1_0 extends
_frameWriter.setValue(amqFrame);
- QpidByteBuffer buffer =
QpidByteBuffer.allocateDirect(_endpoint.getMaxFrameSize());
+ QpidByteBuffer buffer =
QpidByteBuffer.allocateDirect(_frameWriter.getSize());
try
{
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]