summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Donald Kennedy <grkvlt@apache.org>2011-02-17 15:28:33 +0000
committerAndrew Donald Kennedy <grkvlt@apache.org>2011-02-17 15:28:33 +0000
commit75fea20c62d69693635ed0319b65bf2856e90003 (patch)
tree1e8178e69426f38fddd491f69587df2138f02b98
parent4a6d824f6344a4978f3be22264614e0fc34ab6dd (diff)
downloadqpid-python-75fea20c62d69693635ed0319b65bf2856e90003.tar.gz
QPID-3065: Send header and frame data as single buffer
The Disassembler now fills a ByteBuffer with the entire frame contents before passing it to the Sender. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1071641 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/transport/network/Disassembler.java23
1 files changed, 13 insertions, 10 deletions
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/transport/network/Disassembler.java b/qpid/java/common/src/main/java/org/apache/qpid/transport/network/Disassembler.java
index ab174b00b3..bf439299b9 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/transport/network/Disassembler.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/transport/network/Disassembler.java
@@ -101,20 +101,23 @@ public final class Disassembler implements Sender<ProtocolEvent>,
{
synchronized (sendlock)
{
- header.put(0, flags);
- header.put(1, type);
- header.putShort(2, (short) (size + HEADER_SIZE));
- header.put(5, track);
- header.putShort(6, (short) channel);
-
- header.rewind();
-
- sender.send(header);
+ ByteBuffer data = ByteBuffer.allocate(size + HEADER_SIZE);
+ data.order(ByteOrder.BIG_ENDIAN);
+
+ data.put(0, flags);
+ data.put(1, type);
+ data.putShort(2, (short) (size + HEADER_SIZE));
+ data.put(5, track);
+ data.putShort(6, (short) channel);
+ data.position(HEADER_SIZE);
int limit = buf.limit();
buf.limit(buf.position() + size);
- sender.send(buf);
+ data.put(buf);
buf.limit(limit);
+
+ data.rewind();
+ sender.send(data);
}
}