Author: rhs
Date: Tue Oct 2 18:52:56 2007
New Revision: 581469
URL: http://svn.apache.org/viewvc?rev=581469&view=rev
Log:
fixed encoding of b/e bits and handling of max frame size
Modified:
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Channel.java
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/Disassembler.java
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/Frame.java
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/mina/MinaHandler.java
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/util/Functions.java
Modified:
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Channel.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Channel.java?rev=581469&r1=581468&r2=581469&view=diff
==============================================================================
---
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Channel.java
(original)
+++
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Channel.java
Tue Oct 2 18:52:56 2007
@@ -145,11 +145,6 @@
public void method(Method m)
{
emit(m);
-
- if (m.getEncodedTrack() != L4)
- {
- System.out.println("sent control " + m.getClass().getName());
- }
}
public void header(Header header)
Modified:
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/Disassembler.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/Disassembler.java?rev=581469&r1=581468&r2=581469&view=diff
==============================================================================
---
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/Disassembler.java
(original)
+++
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/Disassembler.java
Tue Oct 2 18:52:56 2007
@@ -35,6 +35,7 @@
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 @@
{
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 @@
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 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;
}
}
Modified:
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/Frame.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/Frame.java?rev=581469&r1=581468&r2=581469&view=diff
==============================================================================
---
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/Frame.java
(original)
+++
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/Frame.java
Tue Oct 2 18:52:56 2007
@@ -170,7 +170,7 @@
str.append(" | ");
}
- str.append(str(buf));
+ str.append(str(buf, 20));
}
return str.toString();
Modified:
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/mina/MinaHandler.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/mina/MinaHandler.java?rev=581469&r1=581468&r2=581469&view=diff
==============================================================================
---
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/mina/MinaHandler.java
(original)
+++
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/mina/MinaHandler.java
Tue Oct 2 18:52:56 2007
@@ -92,7 +92,7 @@
// 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 =
Modified:
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/util/Functions.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/util/Functions.java?rev=581469&r1=581468&r2=581469&view=diff
==============================================================================
---
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/util/Functions.java
(original)
+++
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/util/Functions.java
Tue Oct 2 18:52:56 2007
@@ -22,6 +22,8 @@
import java.nio.ByteBuffer;
+import static java.lang.Math.*;
+
/**
* Functions
@@ -44,13 +46,13 @@
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)
{