diff options
Diffstat (limited to 'qpid/java/common/src')
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); } |