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);
}