diff options
author | Andrew Donald Kennedy <grkvlt@apache.org> | 2011-02-17 15:28:33 +0000 |
---|---|---|
committer | Andrew Donald Kennedy <grkvlt@apache.org> | 2011-02-17 15:28:33 +0000 |
commit | 75fea20c62d69693635ed0319b65bf2856e90003 (patch) | |
tree | 1e8178e69426f38fddd491f69587df2138f02b98 | |
parent | 4a6d824f6344a4978f3be22264614e0fc34ab6dd (diff) | |
download | qpid-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.java | 23 |
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); } } |