summaryrefslogtreecommitdiff
path: root/java/common/src
diff options
context:
space:
mode:
authorRafael H. Schloming <rhs@apache.org>2007-10-03 01:52:56 +0000
committerRafael H. Schloming <rhs@apache.org>2007-10-03 01:52:56 +0000
commit0438becec75387a866bdb67ace12d5d589596fac (patch)
treed63d8741f9a65bca0a7c7473834f6dafd0053ff1 /java/common/src
parent2bfadc114f971ad565851c2862bc10c43824fe54 (diff)
downloadqpid-python-0438becec75387a866bdb67ace12d5d589596fac.tar.gz
fixed encoding of b/e bits and handling of max frame size
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@581469 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/common/src')
-rw-r--r--java/common/src/main/java/org/apache/qpidity/transport/Channel.java5
-rw-r--r--java/common/src/main/java/org/apache/qpidity/transport/network/Disassembler.java23
-rw-r--r--java/common/src/main/java/org/apache/qpidity/transport/network/Frame.java2
-rw-r--r--java/common/src/main/java/org/apache/qpidity/transport/network/mina/MinaHandler.java2
-rw-r--r--java/common/src/main/java/org/apache/qpidity/transport/util/Functions.java6
5 files changed, 23 insertions, 15 deletions
diff --git a/java/common/src/main/java/org/apache/qpidity/transport/Channel.java b/java/common/src/main/java/org/apache/qpidity/transport/Channel.java
index f05ec82d65..b6b2ddbe7f 100644
--- a/java/common/src/main/java/org/apache/qpidity/transport/Channel.java
+++ b/java/common/src/main/java/org/apache/qpidity/transport/Channel.java
@@ -145,11 +145,6 @@ public class Channel extends Invoker
public void method(Method m)
{
emit(m);
-
- if (m.getEncodedTrack() != L4)
- {
- System.out.println("sent control " + m.getClass().getName());
- }
}
public void header(Header header)
diff --git a/java/common/src/main/java/org/apache/qpidity/transport/network/Disassembler.java b/java/common/src/main/java/org/apache/qpidity/transport/network/Disassembler.java
index 770595922b..e7541490a5 100644
--- a/java/common/src/main/java/org/apache/qpidity/transport/network/Disassembler.java
+++ b/java/common/src/main/java/org/apache/qpidity/transport/network/Disassembler.java
@@ -35,6 +35,7 @@ import org.apache.qpidity.transport.Sender;
import org.apache.qpidity.transport.Struct;
import java.nio.ByteBuffer;
+import java.util.Iterator;
import static org.apache.qpidity.transport.network.Frame.*;
@@ -51,17 +52,23 @@ public class Disassembler implements Sender<ConnectionEvent>,
{
private final Sender<NetworkEvent> sender;
- private final int maxFrame;
+ private final int maxPayload;
private final byte major;
private final byte minor;
public Disassembler(Sender<NetworkEvent> sender, byte major, byte minor,
int maxFrame)
{
+ if (maxFrame <= HEADER_SIZE || maxFrame >= 64*1024)
+ {
+ throw new IllegalArgumentException
+ ("maxFrame must be > HEADER_SIZE and < 64K: " + maxFrame);
+ }
this.sender = sender;
this.major = major;
this.minor = minor;
- this.maxFrame = maxFrame;
+ this.maxPayload = maxFrame - HEADER_SIZE;
+
}
public void send(ConnectionEvent event)
@@ -80,7 +87,7 @@ public class Disassembler implements Sender<ConnectionEvent>,
while (buf.hasRemaining())
{
ByteBuffer slice = buf.slice();
- slice.limit(min(maxFrame, slice.remaining()));
+ slice.limit(min(maxPayload, slice.remaining()));
buf.position(buf.position() + slice.remaining());
byte newflags = flags;
@@ -154,10 +161,14 @@ public class Disassembler implements Sender<ConnectionEvent>,
public void data(ConnectionEvent event, Data data)
{
- for (ByteBuffer buf : data.getFragments())
+ boolean first = data.isFirst();
+ for (Iterator<ByteBuffer> it = data.getFragments().iterator();
+ it.hasNext(); )
{
- fragment(LAST_SEG, BODY, event, buf, data.isFirst(),
- data.isLast());
+ ByteBuffer buf = it.next();
+ boolean last = data.isLast() && !it.hasNext();
+ fragment(LAST_SEG, BODY, event, buf, first, last);
+ first = false;
}
}
diff --git a/java/common/src/main/java/org/apache/qpidity/transport/network/Frame.java b/java/common/src/main/java/org/apache/qpidity/transport/network/Frame.java
index c36b03b104..a5c5db4dba 100644
--- a/java/common/src/main/java/org/apache/qpidity/transport/network/Frame.java
+++ b/java/common/src/main/java/org/apache/qpidity/transport/network/Frame.java
@@ -170,7 +170,7 @@ public class Frame implements NetworkEvent, Iterable<ByteBuffer>
str.append(" | ");
}
- str.append(str(buf));
+ str.append(str(buf, 20));
}
return str.toString();
diff --git a/java/common/src/main/java/org/apache/qpidity/transport/network/mina/MinaHandler.java b/java/common/src/main/java/org/apache/qpidity/transport/network/mina/MinaHandler.java
index ac9dab615d..162e829c6f 100644
--- a/java/common/src/main/java/org/apache/qpidity/transport/network/mina/MinaHandler.java
+++ b/java/common/src/main/java/org/apache/qpidity/transport/network/mina/MinaHandler.java
@@ -92,7 +92,7 @@ public class MinaHandler implements IoHandler
// XXX: hardcoded version + max-frame
Connection conn = new Connection
(new Disassembler(new OutputHandler(new MinaSender(ssn)),
- (byte)0, (byte)10, 64*1024),
+ (byte)0, (byte)10, 64*1024 - 1),
delegate);
// XXX: hardcoded version
Receiver<java.nio.ByteBuffer> receiver =
diff --git a/java/common/src/main/java/org/apache/qpidity/transport/util/Functions.java b/java/common/src/main/java/org/apache/qpidity/transport/util/Functions.java
index 69025940b5..7dbb3d30e8 100644
--- a/java/common/src/main/java/org/apache/qpidity/transport/util/Functions.java
+++ b/java/common/src/main/java/org/apache/qpidity/transport/util/Functions.java
@@ -22,6 +22,8 @@ package org.apache.qpidity.transport.util;
import java.nio.ByteBuffer;
+import static java.lang.Math.*;
+
/**
* Functions
@@ -44,13 +46,13 @@ public class Functions
public static final String str(ByteBuffer buf)
{
- return str(buf, buf.limit());
+ return str(buf, buf.remaining());
}
public static final String str(ByteBuffer buf, int limit)
{
StringBuilder str = new StringBuilder();
- for (int i = 0; i < buf.remaining(); i++)
+ for (int i = 0; i < min(buf.remaining(), limit); i++)
{
if (i > 0 && i % 2 == 0)
{