summaryrefslogtreecommitdiff
path: root/qpid/java/common/src
diff options
context:
space:
mode:
authorRafael H. Schloming <rhs@apache.org>2008-06-03 17:54:45 +0000
committerRafael H. Schloming <rhs@apache.org>2008-06-03 17:54:45 +0000
commitc2774f9db2ae2c5fdf339ac6ec4e40d35dea24bf (patch)
tree1a61c93d5670ab966fb1ca8bc867808c5d9fb1bd /qpid/java/common/src
parentc0688ca6dede00e51ab4c691b96f8b1a2ad338e3 (diff)
downloadqpid-python-c2774f9db2ae2c5fdf339ac6ec4e40d35dea24bf.tar.gz
QPID-1062: modified generated code to keep packing flags in wire form and override commonly used size methods for improved performance
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@662849 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/common/src')
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpidity/transport/Struct.java19
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpidity/transport/codec/AbstractDecoder.java49
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpidity/transport/codec/AbstractEncoder.java36
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpidity/transport/codec/Decoder.java1
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpidity/transport/codec/Encoder.java3
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpidity/transport/codec/SizeEncoder.java60
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpidity/transport/codec/Sizer.java3
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpidity/transport/network/Disassembler.java2
8 files changed, 71 insertions, 102 deletions
diff --git a/qpid/java/common/src/main/java/org/apache/qpidity/transport/Struct.java b/qpid/java/common/src/main/java/org/apache/qpidity/transport/Struct.java
index 9146f41535..a15d0a1fb8 100644
--- a/qpid/java/common/src/main/java/org/apache/qpidity/transport/Struct.java
+++ b/qpid/java/common/src/main/java/org/apache/qpidity/transport/Struct.java
@@ -21,6 +21,7 @@
package org.apache.qpidity.transport;
import java.util.List;
+import java.util.Map;
import org.apache.qpidity.transport.codec.Decoder;
import org.apache.qpidity.transport.codec.Encodable;
@@ -55,8 +56,6 @@ public abstract class Struct implements Encodable
public abstract int getStructType();
- public abstract List<Field<?,?>> getFields();
-
public abstract int getSizeWidth();
public abstract int getPackWidth();
@@ -112,6 +111,8 @@ public abstract class Struct implements Encodable
public abstract void write(Encoder enc);
+ public abstract Map<String,Object> getFields();
+
public String toString()
{
StringBuilder str = new StringBuilder();
@@ -119,16 +120,8 @@ public abstract class Struct implements Encodable
str.append("(");
boolean first = true;
- for (Field<?,?> f : getFields())
+ for (Map.Entry<String,Object> me : getFields().entrySet())
{
- if (packed())
- {
- if (!f.has(this))
- {
- continue;
- }
- }
-
if (first)
{
first = false;
@@ -137,9 +130,9 @@ public abstract class Struct implements Encodable
{
str.append(", ");
}
- str.append(f.getName());
+ str.append(me.getKey());
str.append("=");
- str.append(f.get(this));
+ str.append(me.getValue());
}
str.append(")");
diff --git a/qpid/java/common/src/main/java/org/apache/qpidity/transport/codec/AbstractDecoder.java b/qpid/java/common/src/main/java/org/apache/qpidity/transport/codec/AbstractDecoder.java
index 7b680171da..ebfc6b120f 100644
--- a/qpid/java/common/src/main/java/org/apache/qpidity/transport/codec/AbstractDecoder.java
+++ b/qpid/java/common/src/main/java/org/apache/qpidity/transport/codec/AbstractDecoder.java
@@ -45,30 +45,18 @@ import static org.apache.qpidity.transport.util.Functions.*;
abstract class AbstractDecoder implements Decoder
{
- private int count;
-
- protected AbstractDecoder()
- {
- this.count = 0;
- }
-
protected abstract byte doGet();
protected abstract void doGet(byte[] bytes);
protected byte get()
{
- clearBits();
- byte b = doGet();
- count += 1;
- return b;
+ return doGet();
}
protected void get(byte[] bytes)
{
- clearBits();
doGet(bytes);
- count += bytes.length;
}
protected short uget()
@@ -76,32 +64,6 @@ abstract class AbstractDecoder implements Decoder
return (short) (0xFF & get());
}
- private byte bits = 0x0;
- private byte nbits = 0;
-
- public boolean readBit()
- {
- if (nbits == 0)
- {
- bits = get();
- }
-
- boolean result = (bits & (1 << nbits++)) != 0;
-
- if (nbits == 8)
- {
- clearBits();
- }
-
- return result;
- }
-
- private void clearBits()
- {
- bits = 0x0;
- nbits = 0;
- }
-
public short readUint8()
{
return uget();
@@ -271,10 +233,9 @@ abstract class AbstractDecoder implements Decoder
public Map<String,Object> readMap()
{
long size = readUint32();
- int start = count;
- long fieldCount = readUint32();
+ long count = readUint32();
Map<String,Object> result = new LinkedHashMap();
- while (count < start + size)
+ for (int i = 0; i < count; i++)
{
String key = readStr8();
byte code = get();
@@ -288,9 +249,9 @@ abstract class AbstractDecoder implements Decoder
public List<Object> readList()
{
long size = readUint32();
- int start = count;
+ long count = readUint32();
List<Object> result = new ArrayList();
- while (count < start + size)
+ for (int i = 0; i < count; i++)
{
byte code = get();
Type t = getType(code);
diff --git a/qpid/java/common/src/main/java/org/apache/qpidity/transport/codec/AbstractEncoder.java b/qpid/java/common/src/main/java/org/apache/qpidity/transport/codec/AbstractEncoder.java
index 4e9f918b61..aa90627943 100644
--- a/qpid/java/common/src/main/java/org/apache/qpidity/transport/codec/AbstractEncoder.java
+++ b/qpid/java/common/src/main/java/org/apache/qpidity/transport/codec/AbstractEncoder.java
@@ -75,13 +75,11 @@ abstract class AbstractEncoder implements Encoder
protected void put(byte b)
{
- flushBits();
doPut(b);
}
protected void put(ByteBuffer src)
{
- flushBits();
doPut(src);
}
@@ -90,39 +88,6 @@ abstract class AbstractEncoder implements Encoder
put(ByteBuffer.wrap(bytes));
}
- private byte bits = 0x0;
- private byte nbits = 0;
-
- public void writeBit(boolean b)
- {
- if (b)
- {
- bits |= 1 << nbits;
- }
-
- nbits += 1;
-
- if (nbits == 8)
- {
- flushBits();
- }
- }
-
- private void flushBits()
- {
- if (nbits > 0)
- {
- doPut(bits);
- bits = 0x0;
- nbits = 0;
- }
- }
-
- public void flush()
- {
- flushBits();
- }
-
public void writeUint8(short b)
{
assert b < 0x100;
@@ -406,6 +371,7 @@ abstract class AbstractEncoder implements Encoder
sizer.writeList(list);
// XXX: - 4
writeUint32(sizer.size() - 4);
+ writeUint32(list.size());
writeListEntries(list);
}
diff --git a/qpid/java/common/src/main/java/org/apache/qpidity/transport/codec/Decoder.java b/qpid/java/common/src/main/java/org/apache/qpidity/transport/codec/Decoder.java
index df2d208118..62abc74668 100644
--- a/qpid/java/common/src/main/java/org/apache/qpidity/transport/codec/Decoder.java
+++ b/qpid/java/common/src/main/java/org/apache/qpidity/transport/codec/Decoder.java
@@ -37,7 +37,6 @@ import org.apache.qpidity.transport.Struct;
public interface Decoder
{
- boolean readBit();
short readUint8();
int readUint16();
long readUint32();
diff --git a/qpid/java/common/src/main/java/org/apache/qpidity/transport/codec/Encoder.java b/qpid/java/common/src/main/java/org/apache/qpidity/transport/codec/Encoder.java
index 0449ba6702..9d7a1a695d 100644
--- a/qpid/java/common/src/main/java/org/apache/qpidity/transport/codec/Encoder.java
+++ b/qpid/java/common/src/main/java/org/apache/qpidity/transport/codec/Encoder.java
@@ -37,9 +37,6 @@ import org.apache.qpidity.transport.Struct;
public interface Encoder
{
- void flush();
-
- void writeBit(boolean b);
void writeUint8(short b);
void writeUint16(int s);
void writeUint32(long i);
diff --git a/qpid/java/common/src/main/java/org/apache/qpidity/transport/codec/SizeEncoder.java b/qpid/java/common/src/main/java/org/apache/qpidity/transport/codec/SizeEncoder.java
index 2c501a0746..2e7e883a0b 100644
--- a/qpid/java/common/src/main/java/org/apache/qpidity/transport/codec/SizeEncoder.java
+++ b/qpid/java/common/src/main/java/org/apache/qpidity/transport/codec/SizeEncoder.java
@@ -23,6 +23,9 @@ package org.apache.qpidity.transport.codec;
import java.nio.ByteBuffer;
import java.util.Map;
+import java.util.UUID;
+
+import org.apache.qpidity.transport.RangeSet;
/**
@@ -59,7 +62,6 @@ public class SizeEncoder extends AbstractEncoder implements Sizer
public int size()
{
- flush();
return getSize();
}
@@ -73,4 +75,60 @@ public class SizeEncoder extends AbstractEncoder implements Sizer
size += src.remaining();
}
+ public void writeUint8(short b)
+ {
+ size += 1;
+ }
+
+ public void writeUint16(int s)
+ {
+ size += 2;
+ }
+
+ public void writeUint32(long i)
+ {
+ size += 4;
+ }
+
+ public void writeUint64(long l)
+ {
+ size += 8;
+ }
+
+ public void writeDatetime(long l)
+ {
+ size += 8;
+ }
+
+ public void writeUuid(UUID uuid)
+ {
+ size += 16;
+ }
+
+ public void writeSequenceNo(int s)
+ {
+ size += 4;
+ }
+
+ public void writeSequenceSet(RangeSet ranges)
+ {
+ size += 2 + 8*ranges.size();
+ }
+
+ //void writeByteRanges(RangeSet ranges); // XXX
+
+ //void writeStr8(String s);
+ //void writeStr16(String s);
+
+ //void writeVbin8(byte[] bytes);
+ //void writeVbin16(byte[] bytes);
+ //void writeVbin32(byte[] bytes);
+
+ //void writeStruct32(Struct s);
+ //void writeMap(Map<String,Object> map);
+ //void writeList(List<Object> list);
+ //void writeArray(List<Object> array);
+
+ //void writeStruct(int type, Struct s);
+
}
diff --git a/qpid/java/common/src/main/java/org/apache/qpidity/transport/codec/Sizer.java b/qpid/java/common/src/main/java/org/apache/qpidity/transport/codec/Sizer.java
index 8ffdd5150b..d386987d64 100644
--- a/qpid/java/common/src/main/java/org/apache/qpidity/transport/codec/Sizer.java
+++ b/qpid/java/common/src/main/java/org/apache/qpidity/transport/codec/Sizer.java
@@ -38,9 +38,6 @@ public interface Sizer extends Encoder
public static final Sizer NULL = new Sizer()
{
- public void flush() {}
-
- public void writeBit(boolean b) {}
public void writeUint8(short b) {}
public void writeUint16(int s) {}
public void writeUint32(long i) {}
diff --git a/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/Disassembler.java b/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/Disassembler.java
index 0357df6e86..709b4f0e02 100644
--- a/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/Disassembler.java
+++ b/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/Disassembler.java
@@ -164,7 +164,6 @@ public class Disassembler implements Sender<ConnectionEvent>,
}
}
method.write(enc);
- enc.flush();
buf.flip();
byte flags = FIRST_SEG;
@@ -193,7 +192,6 @@ public class Disassembler implements Sender<ConnectionEvent>,
for (Struct st : header.getStructs())
{
enc.writeStruct32(st);
- enc.flush();
}
header.setBuf(buf);
}