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)
             {


Reply via email to