Author: arnaudsimon
Date: Fri Jan  4 05:49:10 2008
New Revision: 608838

URL: http://svn.apache.org/viewvc?rev=608838&view=rev
Log:
chshed headers: see QPID-720

Modified:
    incubator/qpid/trunk/qpid/java/common/generate
    
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/api/Message.java
    
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Connection.java
    
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Header.java
    
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Session.java
    
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Struct.java
    
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/Disassembler.java

Modified: incubator/qpid/trunk/qpid/java/common/generate
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/generate?rev=608838&r1=608837&r2=608838&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/generate (original)
+++ incubator/qpid/trunk/qpid/java/common/generate Fri Jan  4 05:49:10 2008
@@ -370,11 +370,11 @@
     for type, name in self.fields:
       out.getter("boolean", camel(1, "has", name), "has_" + name)
       out.setter("boolean", camel(1, "clear", name), "has_" + name, "false",
-                 post = "this.%s = %s" % (name, DEFAULTS.get(type, "null")))
+                 post = "this.%s = %s; this.dirty = true" % (name, 
DEFAULTS.get(type, "null")))
       out.getter(jtype(type), camel(1, "get", name), name)
       for mname in (camel(1, "set", name), name):
         out.setter(jtype(type), mname, name,
-                   post = "this.has_%s = true" % name)
+                   post = "this.has_%s = true; this.dirty = true" % name)
 
       out.line()
       out.line('    static {')
@@ -398,6 +398,7 @@
                  (name, STRUCTS[type], STRUCTS[type]))
       else:
         raise Exception("unknown type: %s" % type)
+      out.line('                check(struct).dirty = true;')
       out.line('            }')
       out.line('            public void write(Encoder enc, Object struct) {')
       if TYPES.has_key(type):

Modified: 
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/api/Message.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/api/Message.java?rev=608838&r1=608837&r2=608838&view=diff
==============================================================================
--- 
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/api/Message.java
 (original)
+++ 
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/api/Message.java
 Fri Jan  4 05:49:10 2008
@@ -5,6 +5,7 @@
 
 import org.apache.qpidity.transport.MessageProperties;
 import org.apache.qpidity.transport.DeliveryProperties;
+import org.apache.qpidity.transport.Header;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -27,7 +28,11 @@
 
 public interface Message
 {
-       public MessageProperties getMessageProperties();
+    public Header getHeader();
+
+    public void setHeader(Header header);
+
+    public MessageProperties getMessageProperties();
 
        public DeliveryProperties getDeliveryProperties();
 
@@ -45,6 +50,7 @@
         * @param src - the data to append
         */
        public void appendData(byte[] src) throws IOException;
+
 
     /**
      * This will abstract the underlying message data.

Modified: 
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Connection.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Connection.java?rev=608838&r1=608837&r2=608838&view=diff
==============================================================================
--- 
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Connection.java
 (original)
+++ 
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Connection.java
 Fri Jan  4 05:49:10 2008
@@ -77,7 +77,7 @@
 
     public void received(ConnectionEvent event)
     {
-        log.debug("RECV: %s", event);
+       log.debug("RECV: %s", event);
         Channel channel = getChannel(event.getChannel());
         channel.received(event.getProtocolEvent());
     }

Modified: 
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Header.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Header.java?rev=608838&r1=608837&r2=608838&view=diff
==============================================================================
--- 
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Header.java
 (original)
+++ 
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Header.java
 Fri Jan  4 05:49:10 2008
@@ -23,6 +23,7 @@
 import org.apache.qpidity.transport.network.Frame;
 
 import java.util.List;
+import java.nio.ByteBuffer;
 
 
 /**
@@ -34,6 +35,7 @@
 public class Header implements ProtocolEvent {
 
     private final List<Struct> structs;
+    private ByteBuffer _buf;
 
     public Header(List<Struct> structs)
     {
@@ -45,6 +47,15 @@
         return structs;
     }
 
+    public void setBuf(ByteBuffer buf)
+    {
+        _buf = buf;
+    }
+
+    public ByteBuffer getBuf()
+    {
+        return _buf;
+    }
     public <T> T get(Class<T> klass)
     {
         for (Struct st : structs)

Modified: 
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Session.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Session.java?rev=608838&r1=608837&r2=608838&view=diff
==============================================================================
--- 
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Session.java
 (original)
+++ 
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Session.java
 Fri Jan  4 05:49:10 2008
@@ -229,19 +229,21 @@
         }
     }
 
-    public void header(Header header)
+     public void header(Header header)
     {
         channel.header(header);
     }
 
-    public void header(List<Struct> structs)
+    public Header header(List<Struct> structs)
     {
-        header(new Header(structs));
+        Header res = new Header(structs);
+        header(res);
+        return res;
     }
 
-    public void header(Struct ... structs)
+    public Header header(Struct ... structs)
     {
-        header(Arrays.asList(structs));
+        return header(Arrays.asList(structs));
     }
 
     public void data(ByteBuffer buf)

Modified: 
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Struct.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Struct.java?rev=608838&r1=608837&r2=608838&view=diff
==============================================================================
--- 
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Struct.java
 (original)
+++ 
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/Struct.java
 Fri Jan  4 05:49:10 2008
@@ -41,6 +41,18 @@
         return StructFactory.create(type);
     }
 
+    boolean dirty = true;
+
+    public boolean isDirty()
+    {
+        return dirty;
+    }
+
+    public void setDirty(boolean dirty)
+    {
+        this.dirty = dirty;
+    }
+
     public abstract int getStructType();
 
     public abstract List<Field<?,?>> getFields();

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=608838&r1=608837&r2=608838&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
 Fri Jan  4 05:49:10 2008
@@ -153,21 +153,29 @@
 
     public void header(ConnectionEvent event, Header header)
     {
-        SizeEncoder sizer = new SizeEncoder();
-        for (Struct st : header.getStructs())
+         ByteBuffer buf;
+        if( header.getBuf() == null)
         {
-            sizer.writeLongStruct(st);
-        }
+            SizeEncoder sizer = new SizeEncoder();
+            for (Struct st : header.getStructs())
+            {
+                sizer.writeLongStruct(st);
+            }
 
-        ByteBuffer buf = ByteBuffer.allocate(sizer.size());
-        BBEncoder enc = new BBEncoder(buf);
-        for (Struct st : header.getStructs())
+            buf = ByteBuffer.allocate(sizer.size());
+            BBEncoder enc = new BBEncoder(buf);
+            for (Struct st : header.getStructs())
+            {
+                enc.writeLongStruct(st);
+                enc.flush();
+            }
+            header.setBuf(buf);
+        }
+        else
         {
-            enc.writeLongStruct(st);
-            enc.flush();
+            buf = header.getBuf();          
         }
-        buf.flip();
-
+          buf.flip();
         fragment((byte) 0x0, HEADER, event, buf, true, true);
     }
 


Reply via email to