diff --git a/api/net/sf/briar/api/protocol/Types.java b/api/net/sf/briar/api/protocol/Types.java index 8ace5c0d9eb8a5a844d9a7b9a81f92e7676e012a..cc6ed4bc9da58360e233bfd534a074b4ae13242b 100644 --- a/api/net/sf/briar/api/protocol/Types.java +++ b/api/net/sf/briar/api/protocol/Types.java @@ -1,6 +1,6 @@ package net.sf.briar.api.protocol; -/** User-defined type identifiers for encoding and decoding protocol objects. */ +/** Struct identifiers for encoding and decoding protocol objects. */ public interface Types { static final int ACK = 0; diff --git a/api/net/sf/briar/api/serial/Reader.java b/api/net/sf/briar/api/serial/Reader.java index 1b41585f0dc382fcdeb5325617caaff84ecc56ef..9dece9845fcdbfd70a34a92fd78ee4b3165b015b 100644 --- a/api/net/sf/briar/api/serial/Reader.java +++ b/api/net/sf/briar/api/serial/Reader.java @@ -69,7 +69,7 @@ public interface Reader { boolean hasNull() throws IOException; void readNull() throws IOException; - boolean hasUserDefined(int id) throws IOException; - <T> T readUserDefined(int id, Class<T> t) throws IOException; - void readUserDefinedId(int id) throws IOException; + boolean hasStruct(int id) throws IOException; + <T> T readStruct(int id, Class<T> t) throws IOException; + void readStructId(int id) throws IOException; } diff --git a/api/net/sf/briar/api/serial/SerialComponent.java b/api/net/sf/briar/api/serial/SerialComponent.java index 1dc84673202278bfb42c2cf38fc7042ce0fa014f..b68a499d43ec78a8cd00f337002682b039878882 100644 --- a/api/net/sf/briar/api/serial/SerialComponent.java +++ b/api/net/sf/briar/api/serial/SerialComponent.java @@ -8,5 +8,5 @@ public interface SerialComponent { int getSerialisedUniqueIdLength(int id); - int getSerialisedUserDefinedIdLength(int id); + int getSerialisedStructIdLength(int id); } diff --git a/api/net/sf/briar/api/serial/Writer.java b/api/net/sf/briar/api/serial/Writer.java index 9b2b1482d31bcb477f4f2535180704272f01222a..1bf72c21f7825820ba2a909dc3076a7bb00d1573 100644 --- a/api/net/sf/briar/api/serial/Writer.java +++ b/api/net/sf/briar/api/serial/Writer.java @@ -34,5 +34,5 @@ public interface Writer { void writeNull() throws IOException; - void writeUserDefinedId(int tag) throws IOException; + void writeStructId(int id) throws IOException; } diff --git a/components/net/sf/briar/protocol/AckReader.java b/components/net/sf/briar/protocol/AckReader.java index 5e50db75e1e501848e16ff3e22190ab1ce87f71b..ebfa0ab9b343ff5a66d1136f94ef5c7bc793d03d 100644 --- a/components/net/sf/briar/protocol/AckReader.java +++ b/components/net/sf/briar/protocol/AckReader.java @@ -30,7 +30,7 @@ class AckReader implements ObjectReader<Ack> { new CountingConsumer(ProtocolConstants.MAX_PACKET_LENGTH); // Read and digest the data r.addConsumer(counting); - r.readUserDefinedId(Types.ACK); + r.readStructId(Types.ACK); r.addObjectReader(Types.BATCH_ID, batchIdReader); Collection<BatchId> batches = r.readList(BatchId.class); r.removeObjectReader(Types.BATCH_ID); @@ -42,7 +42,7 @@ class AckReader implements ObjectReader<Ack> { private static class BatchIdReader implements ObjectReader<BatchId> { public BatchId readObject(Reader r) throws IOException { - r.readUserDefinedId(Types.BATCH_ID); + r.readStructId(Types.BATCH_ID); byte[] b = r.readBytes(UniqueId.LENGTH); if(b.length != UniqueId.LENGTH) throw new FormatException(); return new BatchId(b); diff --git a/components/net/sf/briar/protocol/AuthorFactoryImpl.java b/components/net/sf/briar/protocol/AuthorFactoryImpl.java index d1fb362d5377bfff3fc297c1ec88283cca7bacb2..15d1f6f1da2e0e4d7d6037ea38db9769d832b460 100644 --- a/components/net/sf/briar/protocol/AuthorFactoryImpl.java +++ b/components/net/sf/briar/protocol/AuthorFactoryImpl.java @@ -29,7 +29,7 @@ class AuthorFactoryImpl implements AuthorFactory { throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); Writer w = writerFactory.createWriter(out); - w.writeUserDefinedId(Types.AUTHOR); + w.writeStructId(Types.AUTHOR); w.writeString(name); w.writeBytes(publicKey); MessageDigest messageDigest = crypto.getMessageDigest(); diff --git a/components/net/sf/briar/protocol/AuthorReader.java b/components/net/sf/briar/protocol/AuthorReader.java index eb18812bbeb72dfe018fa5644e636830e80481e5..b81d5b4f2ff5dd46a932960804dd2f114a2f4896 100644 --- a/components/net/sf/briar/protocol/AuthorReader.java +++ b/components/net/sf/briar/protocol/AuthorReader.java @@ -29,7 +29,7 @@ class AuthorReader implements ObjectReader<Author> { messageDigest.reset(); // Read and digest the data r.addConsumer(digesting); - r.readUserDefinedId(Types.AUTHOR); + r.readStructId(Types.AUTHOR); String name = r.readString(ProtocolConstants.MAX_AUTHOR_NAME_LENGTH); byte[] publicKey = r.readBytes(ProtocolConstants.MAX_PUBLIC_KEY_LENGTH); r.removeConsumer(digesting); diff --git a/components/net/sf/briar/protocol/BatchReader.java b/components/net/sf/briar/protocol/BatchReader.java index 04151a76a6a0dafb2f66247f9cafcec99fd026fa..164c5e4606781ae5b541f664d07611589eb4c608 100644 --- a/components/net/sf/briar/protocol/BatchReader.java +++ b/components/net/sf/briar/protocol/BatchReader.java @@ -38,7 +38,7 @@ class BatchReader implements ObjectReader<Batch> { // Read and digest the data r.addConsumer(counting); r.addConsumer(digesting); - r.readUserDefinedId(Types.BATCH); + r.readStructId(Types.BATCH); r.addObjectReader(Types.MESSAGE, messageReader); List<Message> messages = r.readList(Message.class); r.removeObjectReader(Types.MESSAGE); diff --git a/components/net/sf/briar/protocol/GroupFactoryImpl.java b/components/net/sf/briar/protocol/GroupFactoryImpl.java index 3aebebff0148c2304387532c5da8204e2209eee6..839e138ef7233caefb250ddc9f0ed19f68c2ab4d 100644 --- a/components/net/sf/briar/protocol/GroupFactoryImpl.java +++ b/components/net/sf/briar/protocol/GroupFactoryImpl.java @@ -28,7 +28,7 @@ class GroupFactoryImpl implements GroupFactory { public Group createGroup(String name, byte[] publicKey) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); Writer w = writerFactory.createWriter(out); - w.writeUserDefinedId(Types.GROUP); + w.writeStructId(Types.GROUP); w.writeString(name); if(publicKey == null) w.writeNull(); else w.writeBytes(publicKey); diff --git a/components/net/sf/briar/protocol/GroupReader.java b/components/net/sf/briar/protocol/GroupReader.java index 8eba20c68baddda0f806ae57d86f682e0afd0c3b..b076ab81fe1e3530ba25c6f08108d038807ff4e1 100644 --- a/components/net/sf/briar/protocol/GroupReader.java +++ b/components/net/sf/briar/protocol/GroupReader.java @@ -29,7 +29,7 @@ class GroupReader implements ObjectReader<Group> { messageDigest.reset(); // Read and digest the data r.addConsumer(digesting); - r.readUserDefinedId(Types.GROUP); + r.readStructId(Types.GROUP); String name = r.readString(ProtocolConstants.MAX_GROUP_NAME_LENGTH); byte[] publicKey = null; if(r.hasNull()) r.readNull(); diff --git a/components/net/sf/briar/protocol/MessageFactoryImpl.java b/components/net/sf/briar/protocol/MessageFactoryImpl.java index f769af3cd105e0927733de2387dd132f46102792..28406fd6b61243ea57a7e8fe1323001588054c12 100644 --- a/components/net/sf/briar/protocol/MessageFactoryImpl.java +++ b/components/net/sf/briar/protocol/MessageFactoryImpl.java @@ -107,7 +107,7 @@ class MessageFactoryImpl implements MessageFactory { w.addConsumer(groupConsumer); } // Write the message - w.writeUserDefinedId(Types.MESSAGE); + w.writeStructId(Types.MESSAGE); if(parent == null) w.writeNull(); else w.writeBytes(parent.getBytes()); if(group == null) w.writeNull(); @@ -153,7 +153,7 @@ class MessageFactoryImpl implements MessageFactory { } private void writeGroup(Writer w, Group g) throws IOException { - w.writeUserDefinedId(Types.GROUP); + w.writeStructId(Types.GROUP); w.writeString(g.getName()); byte[] publicKey = g.getPublicKey(); if(publicKey == null) w.writeNull(); @@ -161,7 +161,7 @@ class MessageFactoryImpl implements MessageFactory { } private void writeAuthor(Writer w, Author a) throws IOException { - w.writeUserDefinedId(Types.AUTHOR); + w.writeStructId(Types.AUTHOR); w.writeString(a.getName()); w.writeBytes(a.getPublicKey()); } diff --git a/components/net/sf/briar/protocol/MessageIdReader.java b/components/net/sf/briar/protocol/MessageIdReader.java index a47ef6a2db0a6cd6fc5ddba1a1befb737c6657c7..7204af2e745c8ea5c857d181c252b15b975008bb 100644 --- a/components/net/sf/briar/protocol/MessageIdReader.java +++ b/components/net/sf/briar/protocol/MessageIdReader.java @@ -12,7 +12,7 @@ import net.sf.briar.api.serial.Reader; class MessageIdReader implements ObjectReader<MessageId> { public MessageId readObject(Reader r) throws IOException { - r.readUserDefinedId(Types.MESSAGE_ID); + r.readStructId(Types.MESSAGE_ID); byte[] b = r.readBytes(UniqueId.LENGTH); if(b.length != UniqueId.LENGTH) throw new FormatException(); return new MessageId(b); diff --git a/components/net/sf/briar/protocol/MessageReader.java b/components/net/sf/briar/protocol/MessageReader.java index 3bba3525ec548b6d1fbaa66610c77dd713ed8b04..d86a7bfcb95453c9a670a9c8b0062467f1390e27 100644 --- a/components/net/sf/briar/protocol/MessageReader.java +++ b/components/net/sf/briar/protocol/MessageReader.java @@ -50,14 +50,14 @@ class MessageReader implements ObjectReader<Message> { r.addConsumer(copying); r.addConsumer(counting); // Read the initial tag - r.readUserDefinedId(Types.MESSAGE); + r.readStructId(Types.MESSAGE); // Read the parent's message ID, if there is one MessageId parent = null; if(r.hasNull()) { r.readNull(); } else { r.addObjectReader(Types.MESSAGE_ID, messageIdReader); - parent = r.readUserDefined(Types.MESSAGE_ID, MessageId.class); + parent = r.readStruct(Types.MESSAGE_ID, MessageId.class); r.removeObjectReader(Types.MESSAGE_ID); } // Read the group, if there is one @@ -66,7 +66,7 @@ class MessageReader implements ObjectReader<Message> { r.readNull(); } else { r.addObjectReader(Types.GROUP, groupReader); - group = r.readUserDefined(Types.GROUP, Group.class); + group = r.readStruct(Types.GROUP, Group.class); r.removeObjectReader(Types.GROUP); } // Read the author, if there is one @@ -75,7 +75,7 @@ class MessageReader implements ObjectReader<Message> { r.readNull(); } else { r.addObjectReader(Types.AUTHOR, authorReader); - author = r.readUserDefined(Types.AUTHOR, Author.class); + author = r.readStruct(Types.AUTHOR, Author.class); r.removeObjectReader(Types.AUTHOR); } // Read the subject diff --git a/components/net/sf/briar/protocol/OfferReader.java b/components/net/sf/briar/protocol/OfferReader.java index f40389f71aeb5a99a2f7a8f48992e4060773c4ce..e00c8207be2c1b36710ed97d60df78d226da7952 100644 --- a/components/net/sf/briar/protocol/OfferReader.java +++ b/components/net/sf/briar/protocol/OfferReader.java @@ -29,7 +29,7 @@ class OfferReader implements ObjectReader<Offer> { new CountingConsumer(ProtocolConstants.MAX_PACKET_LENGTH); // Read the data r.addConsumer(counting); - r.readUserDefinedId(Types.OFFER); + r.readStructId(Types.OFFER); r.addObjectReader(Types.MESSAGE_ID, messageIdReader); Collection<MessageId> messages = r.readList(MessageId.class); r.removeObjectReader(Types.MESSAGE_ID); diff --git a/components/net/sf/briar/protocol/ProtocolReaderImpl.java b/components/net/sf/briar/protocol/ProtocolReaderImpl.java index df08deef7a2798880ad332f5130a986381a5f9a3..893b437e4e70feb01c6c27559a01250fc33e546f 100644 --- a/components/net/sf/briar/protocol/ProtocolReaderImpl.java +++ b/components/net/sf/briar/protocol/ProtocolReaderImpl.java @@ -39,51 +39,51 @@ class ProtocolReaderImpl implements ProtocolReader { } public boolean hasAck() throws IOException { - return reader.hasUserDefined(Types.ACK); + return reader.hasStruct(Types.ACK); } public Ack readAck() throws IOException { - return reader.readUserDefined(Types.ACK, Ack.class); + return reader.readStruct(Types.ACK, Ack.class); } public boolean hasBatch() throws IOException { - return reader.hasUserDefined(Types.BATCH); + return reader.hasStruct(Types.BATCH); } public Batch readBatch() throws IOException { - return reader.readUserDefined(Types.BATCH, Batch.class); + return reader.readStruct(Types.BATCH, Batch.class); } public boolean hasOffer() throws IOException { - return reader.hasUserDefined(Types.OFFER); + return reader.hasStruct(Types.OFFER); } public Offer readOffer() throws IOException { - return reader.readUserDefined(Types.OFFER, Offer.class); + return reader.readStruct(Types.OFFER, Offer.class); } public boolean hasRequest() throws IOException { - return reader.hasUserDefined(Types.REQUEST); + return reader.hasStruct(Types.REQUEST); } public Request readRequest() throws IOException { - return reader.readUserDefined(Types.REQUEST, Request.class); + return reader.readStruct(Types.REQUEST, Request.class); } public boolean hasSubscriptionUpdate() throws IOException { - return reader.hasUserDefined(Types.SUBSCRIPTION_UPDATE); + return reader.hasStruct(Types.SUBSCRIPTION_UPDATE); } public SubscriptionUpdate readSubscriptionUpdate() throws IOException { - return reader.readUserDefined(Types.SUBSCRIPTION_UPDATE, + return reader.readStruct(Types.SUBSCRIPTION_UPDATE, SubscriptionUpdate.class); } public boolean hasTransportUpdate() throws IOException { - return reader.hasUserDefined(Types.TRANSPORT_UPDATE); + return reader.hasStruct(Types.TRANSPORT_UPDATE); } public TransportUpdate readTransportUpdate() throws IOException { - return reader.readUserDefined(Types.TRANSPORT_UPDATE, TransportUpdate.class); + return reader.readStruct(Types.TRANSPORT_UPDATE, TransportUpdate.class); } } diff --git a/components/net/sf/briar/protocol/RequestReader.java b/components/net/sf/briar/protocol/RequestReader.java index f64fecf64bd645d5f84fe91d1511b98c362af462..13ac7768c55d49ce3e33e179d104c81b3c3c9416 100644 --- a/components/net/sf/briar/protocol/RequestReader.java +++ b/components/net/sf/briar/protocol/RequestReader.java @@ -25,7 +25,7 @@ class RequestReader implements ObjectReader<Request> { new CountingConsumer(ProtocolConstants.MAX_PACKET_LENGTH); // Read the data r.addConsumer(counting); - r.readUserDefinedId(Types.REQUEST); + r.readStructId(Types.REQUEST); byte[] bitmap = r.readBytes(ProtocolConstants.MAX_PACKET_LENGTH); r.removeConsumer(counting); // Convert the bitmap into a BitSet diff --git a/components/net/sf/briar/protocol/SubscriptionUpdateReader.java b/components/net/sf/briar/protocol/SubscriptionUpdateReader.java index 392a5c99cb518d12a6f9655b7710f2a57c352417..fa02250ce020937c50f92d2b511a06c722b06162 100644 --- a/components/net/sf/briar/protocol/SubscriptionUpdateReader.java +++ b/components/net/sf/briar/protocol/SubscriptionUpdateReader.java @@ -30,7 +30,7 @@ class SubscriptionUpdateReader implements ObjectReader<SubscriptionUpdate> { new CountingConsumer(ProtocolConstants.MAX_PACKET_LENGTH); // Read the data r.addConsumer(counting); - r.readUserDefinedId(Types.SUBSCRIPTION_UPDATE); + r.readStructId(Types.SUBSCRIPTION_UPDATE); r.addObjectReader(Types.GROUP, groupReader); Map<Group, Long> subs = r.readMap(Group.class, Long.class); r.removeObjectReader(Types.GROUP); diff --git a/components/net/sf/briar/protocol/TransportUpdateReader.java b/components/net/sf/briar/protocol/TransportUpdateReader.java index fbcfaf8bdba3b971d6cb3d35b84f9df89550cc2a..91b3265ac5918cd1d5562318da2d0d6d8b50fc7c 100644 --- a/components/net/sf/briar/protocol/TransportUpdateReader.java +++ b/components/net/sf/briar/protocol/TransportUpdateReader.java @@ -35,7 +35,7 @@ class TransportUpdateReader implements ObjectReader<TransportUpdate> { new CountingConsumer(ProtocolConstants.MAX_PACKET_LENGTH); // Read the data r.addConsumer(counting); - r.readUserDefinedId(Types.TRANSPORT_UPDATE); + r.readStructId(Types.TRANSPORT_UPDATE); r.addObjectReader(Types.TRANSPORT, transportReader); Collection<Transport> transports = r.readList(Transport.class); r.removeObjectReader(Types.TRANSPORT); @@ -58,7 +58,7 @@ class TransportUpdateReader implements ObjectReader<TransportUpdate> { private static class TransportReader implements ObjectReader<Transport> { public Transport readObject(Reader r) throws IOException { - r.readUserDefinedId(Types.TRANSPORT); + r.readStructId(Types.TRANSPORT); // Read the ID byte[] b = r.readBytes(UniqueId.LENGTH); if(b.length != UniqueId.LENGTH) throw new FormatException(); diff --git a/components/net/sf/briar/protocol/writers/AckWriterImpl.java b/components/net/sf/briar/protocol/writers/AckWriterImpl.java index f943b77271c14a00ed51565c1d48d22d9e0af14d..5b107d1c29f249577e4aefaf2bbaa2416ff216cc 100644 --- a/components/net/sf/briar/protocol/writers/AckWriterImpl.java +++ b/components/net/sf/briar/protocol/writers/AckWriterImpl.java @@ -23,7 +23,7 @@ class AckWriterImpl implements AckWriter { AckWriterImpl(OutputStream out, SerialComponent serial, WriterFactory writerFactory) { this.out = out; - headerLength = serial.getSerialisedUserDefinedIdLength(Types.ACK) + headerLength = serial.getSerialisedStructIdLength(Types.ACK) + serial.getSerialisedListStartLength(); idLength = serial.getSerialisedUniqueIdLength(Types.BATCH_ID); footerLength = serial.getSerialisedListEndLength(); @@ -41,7 +41,7 @@ class AckWriterImpl implements AckWriter { int overhead = started ? footerLength : headerLength + footerLength; if(capacity < idLength + overhead) return false; if(!started) start(); - w.writeUserDefinedId(Types.BATCH_ID); + w.writeStructId(Types.BATCH_ID); w.writeBytes(b.getBytes()); capacity -= idLength; return true; @@ -56,7 +56,7 @@ class AckWriterImpl implements AckWriter { } private void start() throws IOException { - w.writeUserDefinedId(Types.ACK); + w.writeStructId(Types.ACK); w.writeListStart(); capacity -= headerLength; started = true; diff --git a/components/net/sf/briar/protocol/writers/BatchWriterImpl.java b/components/net/sf/briar/protocol/writers/BatchWriterImpl.java index 3c8d5fe93a9b3f20f40ad26d4603b58e87ed3720..dea10f2622c15f9312a0d9d878a2256f5918e96e 100644 --- a/components/net/sf/briar/protocol/writers/BatchWriterImpl.java +++ b/components/net/sf/briar/protocol/writers/BatchWriterImpl.java @@ -28,7 +28,7 @@ class BatchWriterImpl implements BatchWriter { BatchWriterImpl(OutputStream out, SerialComponent serial, WriterFactory writerFactory, MessageDigest messageDigest) { this.out = out; - headerLength = serial.getSerialisedUserDefinedIdLength(Types.BATCH) + headerLength = serial.getSerialisedStructIdLength(Types.BATCH) + serial.getSerialisedListStartLength(); footerLength = serial.getSerialisedListEndLength(); w = writerFactory.createWriter(this.out); @@ -70,7 +70,7 @@ class BatchWriterImpl implements BatchWriter { private void start() throws IOException { messageDigest.reset(); w.addConsumer(digestingConsumer); - w.writeUserDefinedId(Types.BATCH); + w.writeStructId(Types.BATCH); w.writeListStart(); remaining -= headerLength; started = true; diff --git a/components/net/sf/briar/protocol/writers/OfferWriterImpl.java b/components/net/sf/briar/protocol/writers/OfferWriterImpl.java index 523a534af92e983a239e3f303b25706e929ff45c..ba592f36de9f49780e8811ead3cd5db27df2e843 100644 --- a/components/net/sf/briar/protocol/writers/OfferWriterImpl.java +++ b/components/net/sf/briar/protocol/writers/OfferWriterImpl.java @@ -23,7 +23,7 @@ class OfferWriterImpl implements OfferWriter { OfferWriterImpl(OutputStream out, SerialComponent serial, WriterFactory writerFactory) { this.out = out; - headerLength = serial.getSerialisedUserDefinedIdLength(Types.OFFER) + headerLength = serial.getSerialisedStructIdLength(Types.OFFER) + serial.getSerialisedListStartLength(); idLength = serial.getSerialisedUniqueIdLength(Types.MESSAGE_ID); footerLength = serial.getSerialisedListEndLength(); @@ -41,7 +41,7 @@ class OfferWriterImpl implements OfferWriter { int overhead = started ? footerLength : headerLength + footerLength; if(capacity < idLength + overhead) return false; if(!started) start(); - w.writeUserDefinedId(Types.MESSAGE_ID); + w.writeStructId(Types.MESSAGE_ID); w.writeBytes(m.getBytes()); capacity -= idLength; return true; @@ -56,7 +56,7 @@ class OfferWriterImpl implements OfferWriter { } private void start() throws IOException { - w.writeUserDefinedId(Types.OFFER); + w.writeStructId(Types.OFFER); w.writeListStart(); capacity -= headerLength; started = true; diff --git a/components/net/sf/briar/protocol/writers/RequestWriterImpl.java b/components/net/sf/briar/protocol/writers/RequestWriterImpl.java index 7f831eff64339b1ebdf763af8e6809b30de2cd71..68b006006ffb099ede1ad39e7e9fe42b209e2c76 100644 --- a/components/net/sf/briar/protocol/writers/RequestWriterImpl.java +++ b/components/net/sf/briar/protocol/writers/RequestWriterImpl.java @@ -21,7 +21,7 @@ class RequestWriterImpl implements RequestWriter { public void writeRequest(BitSet b, int length) throws IOException { - w.writeUserDefinedId(Types.REQUEST); + w.writeStructId(Types.REQUEST); // If the number of bits isn't a multiple of 8, round up to a byte int bytes = length % 8 == 0 ? length / 8 : length / 8 + 1; byte[] bitmap = new byte[bytes]; diff --git a/components/net/sf/briar/protocol/writers/SubscriptionUpdateWriterImpl.java b/components/net/sf/briar/protocol/writers/SubscriptionUpdateWriterImpl.java index 1856d08e6f011ffd3372716dc6c2b13319dc7b1f..479955716f295c8da7a09412118536b44f15d6a5 100644 --- a/components/net/sf/briar/protocol/writers/SubscriptionUpdateWriterImpl.java +++ b/components/net/sf/briar/protocol/writers/SubscriptionUpdateWriterImpl.java @@ -24,7 +24,7 @@ class SubscriptionUpdateWriterImpl implements SubscriptionUpdateWriter { public void writeSubscriptions(Map<Group, Long> subs, long timestamp) throws IOException { - w.writeUserDefinedId(Types.SUBSCRIPTION_UPDATE); + w.writeStructId(Types.SUBSCRIPTION_UPDATE); w.writeMapStart(); for(Entry<Group, Long> e : subs.entrySet()) { writeGroup(w, e.getKey()); @@ -36,7 +36,7 @@ class SubscriptionUpdateWriterImpl implements SubscriptionUpdateWriter { } private void writeGroup(Writer w, Group g) throws IOException { - w.writeUserDefinedId(Types.GROUP); + w.writeStructId(Types.GROUP); w.writeString(g.getName()); byte[] publicKey = g.getPublicKey(); if(publicKey == null) w.writeNull(); diff --git a/components/net/sf/briar/protocol/writers/TransportUpdateWriterImpl.java b/components/net/sf/briar/protocol/writers/TransportUpdateWriterImpl.java index dad83683565cfa95b5612f13e8123c9f2dc910e5..fdfa0aede8d74179f8fedee19674ff8ae5b104fb 100644 --- a/components/net/sf/briar/protocol/writers/TransportUpdateWriterImpl.java +++ b/components/net/sf/briar/protocol/writers/TransportUpdateWriterImpl.java @@ -22,10 +22,10 @@ class TransportUpdateWriterImpl implements TransportUpdateWriter { public void writeTransports(Collection<Transport> transports, long timestamp) throws IOException { - w.writeUserDefinedId(Types.TRANSPORT_UPDATE); + w.writeStructId(Types.TRANSPORT_UPDATE); w.writeListStart(); for(Transport p : transports) { - w.writeUserDefinedId(Types.TRANSPORT); + w.writeStructId(Types.TRANSPORT); w.writeBytes(p.getId().getBytes()); w.writeInt32(p.getIndex().getInt()); w.writeMap(p); diff --git a/components/net/sf/briar/serial/ReaderImpl.java b/components/net/sf/briar/serial/ReaderImpl.java index afb92a23ce7f79883315a5b0523b0f4d6dbf1072..acb514460eafde19d2da3cf11039527dce3b87a3 100644 --- a/components/net/sf/briar/serial/ReaderImpl.java +++ b/components/net/sf/briar/serial/ReaderImpl.java @@ -51,7 +51,7 @@ class ReaderImpl implements Reader { } next = (byte) i; // If necessary, read another lookahead byte - if(next == Tag.USER) { + if(next == Tag.STRUCT) { i = in.read(); if(i == -1) throw new FormatException(); nextNext = (byte) i; @@ -64,7 +64,7 @@ class ReaderImpl implements Reader { assert hasLookahead; for(Consumer c : consumers) { c.write(next); - if(next == Tag.USER) c.write(nextNext); + if(next == Tag.STRUCT) c.write(nextNext); } hasLookahead = false; } @@ -376,7 +376,7 @@ class ReaderImpl implements Reader { } private Object readObject() throws IOException { - if(hasUserDefined()) return readUserDefined(); + if(hasStruct()) return readStruct(); if(hasBoolean()) return Boolean.valueOf(readBoolean()); if(hasUint7()) return Byte.valueOf(readUint7()); if(hasInt8()) return Byte.valueOf(readInt8()); @@ -396,19 +396,19 @@ class ReaderImpl implements Reader { throw new FormatException(); } - private boolean hasUserDefined() throws IOException { + private boolean hasStruct() throws IOException { if(!hasLookahead) readLookahead(true); if(eof) return false; - return next == Tag.USER - || (next & Tag.SHORT_USER_MASK) == Tag.SHORT_USER; + return next == Tag.STRUCT + || (next & Tag.SHORT_STRUCT_MASK) == Tag.SHORT_STRUCT; } - private Object readUserDefined() throws IOException { - if(!hasUserDefined()) throw new FormatException(); - int tag; - if(next == Tag.USER) tag = 0xFF & nextNext; - else tag = 0xFF & next ^ Tag.SHORT_USER; - return readUserDefined(tag, Object.class); + private Object readStruct() throws IOException { + if(!hasStruct()) throw new FormatException(); + int id; + if(next == Tag.STRUCT) id = 0xFF & nextNext; + else id = 0xFF & next ^ Tag.SHORT_STRUCT; + return readStruct(id, Object.class); } private <T> T readObject(Class<T> t) throws IOException { @@ -529,19 +529,19 @@ class ReaderImpl implements Reader { consumeLookahead(); } - public boolean hasUserDefined(int id) throws IOException { + public boolean hasStruct(int id) throws IOException { if(id < 0 || id > 255) throw new IllegalArgumentException(); if(!hasLookahead) readLookahead(true); if(eof) return false; - if(next == Tag.USER) + if(next == Tag.STRUCT) return id == (0xFF & nextNext); - else if((next & Tag.SHORT_USER_MASK) == Tag.SHORT_USER) - return id == (0xFF & next ^ Tag.SHORT_USER); + else if((next & Tag.SHORT_STRUCT_MASK) == Tag.SHORT_STRUCT) + return id == (0xFF & next ^ Tag.SHORT_STRUCT); else return false; } - public <T> T readUserDefined(int id, Class<T> t) throws IOException { - if(!hasUserDefined(id)) throw new FormatException(); + public <T> T readStruct(int id, Class<T> t) throws IOException { + if(!hasStruct(id)) throw new FormatException(); if(id >= objectReaders.length) throw new FormatException(); ObjectReader<?> o = objectReaders[id]; if(o == null) throw new FormatException(); @@ -552,8 +552,8 @@ class ReaderImpl implements Reader { } } - public void readUserDefinedId(int id) throws IOException { - if(!hasUserDefined(id)) throw new FormatException(); + public void readStructId(int id) throws IOException { + if(!hasStruct(id)) throw new FormatException(); consumeLookahead(); } } diff --git a/components/net/sf/briar/serial/SerialComponentImpl.java b/components/net/sf/briar/serial/SerialComponentImpl.java index 582248c65d52ffa0ba90523ff93d019d3e39a58f..451a375d77cda19d1cc97d45829bb292db6d51bd 100644 --- a/components/net/sf/briar/serial/SerialComponentImpl.java +++ b/components/net/sf/briar/serial/SerialComponentImpl.java @@ -6,16 +6,18 @@ import net.sf.briar.api.serial.SerialComponent; class SerialComponentImpl implements SerialComponent { public int getSerialisedListEndLength() { + // END tag return 1; } public int getSerialisedListStartLength() { + // LIST_START tag return 1; } public int getSerialisedUniqueIdLength(int id) { - // User-defined ID, BYTES tag, length spec, bytes - return getSerialisedUserDefinedIdLength(id) + 1 + // Struct ID, BYTES tag, length spec, bytes + return getSerialisedStructIdLength(id) + 1 + getSerialisedLengthSpecLength(UniqueId.LENGTH) + UniqueId.LENGTH; } @@ -26,7 +28,7 @@ class SerialComponentImpl implements SerialComponent { return 5; // Int32 } - public int getSerialisedUserDefinedIdLength(int id) { + public int getSerialisedStructIdLength(int id) { assert id >= 0 && id <= 255; return id < 32 ? 1 : 2; } diff --git a/components/net/sf/briar/serial/Tag.java b/components/net/sf/briar/serial/Tag.java index fe2e712f0af25538d4dc7436abe1e5416c9fa1d5..895079b4d46409bb5882f98f21f2ad5d55e6ff8b 100644 --- a/components/net/sf/briar/serial/Tag.java +++ b/components/net/sf/briar/serial/Tag.java @@ -18,7 +18,7 @@ interface Tag { static final byte MAP_START = -14; // 1111 0010 static final byte END = -15; // 1111 0001 static final byte NULL = -16; // 1111 0000 - static final byte USER = -17; // 1110 1111 + static final byte STRUCT = -17; // 1110 1111 static final int SHORT_MASK = 0xF0; // Match first four bits static final int SHORT_STRING = 0x80; // 1000 xxxx @@ -26,6 +26,6 @@ interface Tag { static final int SHORT_LIST = 0xA0; // 1010 xxxx static final int SHORT_MAP = 0xB0; // 1011 xxxx - static final int SHORT_USER_MASK = 0xE0; // Match first three bits - static final int SHORT_USER = 0xC0; // 110x xxxx + static final int SHORT_STRUCT_MASK = 0xE0; // Match first three bits + static final int SHORT_STRUCT = 0xC0; // 110x xxxx } diff --git a/components/net/sf/briar/serial/WriterImpl.java b/components/net/sf/briar/serial/WriterImpl.java index 24f51ec9fb7bea876caed82ac3ac332d4914c025..24060b0f68d3f8bf3d62a6f07995b371670aa532 100644 --- a/components/net/sf/briar/serial/WriterImpl.java +++ b/components/net/sf/briar/serial/WriterImpl.java @@ -187,12 +187,12 @@ class WriterImpl implements Writer { write(Tag.NULL); } - public void writeUserDefinedId(int id) throws IOException { + public void writeStructId(int id) throws IOException { if(id < 0 || id > 255) throw new IllegalArgumentException(); if(id < 32) { - write((byte) (Tag.SHORT_USER | id)); + write((byte) (Tag.SHORT_STRUCT | id)); } else { - write(Tag.USER); + write(Tag.STRUCT); write((byte) id); } } diff --git a/test/net/sf/briar/protocol/AckReaderTest.java b/test/net/sf/briar/protocol/AckReaderTest.java index ebb71bd1747b183004e2931134e2071c6997e922..3d22dd7c21ec0596d7cd08668f47b7c04ed234f0 100644 --- a/test/net/sf/briar/protocol/AckReaderTest.java +++ b/test/net/sf/briar/protocol/AckReaderTest.java @@ -51,7 +51,7 @@ public class AckReaderTest extends TestCase { reader.addObjectReader(Types.ACK, ackReader); try { - reader.readUserDefined(Types.ACK, Ack.class); + reader.readStruct(Types.ACK, Ack.class); fail(); } catch(FormatException expected) {} context.assertIsSatisfied(); @@ -73,7 +73,7 @@ public class AckReaderTest extends TestCase { Reader reader = readerFactory.createReader(in); reader.addObjectReader(Types.ACK, ackReader); - assertEquals(ack, reader.readUserDefined(Types.ACK, Ack.class)); + assertEquals(ack, reader.readStruct(Types.ACK, Ack.class)); context.assertIsSatisfied(); } @@ -93,25 +93,25 @@ public class AckReaderTest extends TestCase { Reader reader = readerFactory.createReader(in); reader.addObjectReader(Types.ACK, ackReader); - assertEquals(ack, reader.readUserDefined(Types.ACK, Ack.class)); + assertEquals(ack, reader.readStruct(Types.ACK, Ack.class)); context.assertIsSatisfied(); } private byte[] createAck(boolean tooBig) throws Exception { ByteArrayOutputStream out = new ByteArrayOutputStream(); Writer w = writerFactory.createWriter(out); - w.writeUserDefinedId(Types.ACK); + w.writeStructId(Types.ACK); w.writeListStart(); byte[] b = new byte[UniqueId.LENGTH]; Random random = new Random(); while(out.size() + BatchId.LENGTH + 3 < ProtocolConstants.MAX_PACKET_LENGTH) { - w.writeUserDefinedId(Types.BATCH_ID); + w.writeStructId(Types.BATCH_ID); random.nextBytes(b); w.writeBytes(b); } if(tooBig) { - w.writeUserDefinedId(Types.BATCH_ID); + w.writeStructId(Types.BATCH_ID); random.nextBytes(b); w.writeBytes(b); } @@ -123,7 +123,7 @@ public class AckReaderTest extends TestCase { private byte[] createEmptyAck() throws Exception { ByteArrayOutputStream out = new ByteArrayOutputStream(); Writer w = writerFactory.createWriter(out); - w.writeUserDefinedId(Types.ACK); + w.writeStructId(Types.ACK); w.writeListStart(); w.writeListEnd(); return out.toByteArray(); diff --git a/test/net/sf/briar/protocol/BatchReaderTest.java b/test/net/sf/briar/protocol/BatchReaderTest.java index ec683095e62a0195a6415e0493feb0982db31552..f2971e511be02b4c765a78b2fb43c069ce006452 100644 --- a/test/net/sf/briar/protocol/BatchReaderTest.java +++ b/test/net/sf/briar/protocol/BatchReaderTest.java @@ -61,7 +61,7 @@ public class BatchReaderTest extends TestCase { reader.addObjectReader(Types.BATCH, batchReader); try { - reader.readUserDefined(Types.BATCH, Batch.class); + reader.readStruct(Types.BATCH, Batch.class); fail(); } catch(FormatException expected) {} context.assertIsSatisfied(); @@ -85,7 +85,7 @@ public class BatchReaderTest extends TestCase { Reader reader = readerFactory.createReader(in); reader.addObjectReader(Types.BATCH, batchReader); - assertEquals(batch, reader.readUserDefined(Types.BATCH, Batch.class)); + assertEquals(batch, reader.readStruct(Types.BATCH, Batch.class)); context.assertIsSatisfied(); } @@ -114,7 +114,7 @@ public class BatchReaderTest extends TestCase { Reader reader = readerFactory.createReader(in); reader.addObjectReader(Types.BATCH, batchReader); - assertEquals(batch, reader.readUserDefined(Types.BATCH, Batch.class)); + assertEquals(batch, reader.readStruct(Types.BATCH, Batch.class)); context.assertIsSatisfied(); } @@ -136,17 +136,17 @@ public class BatchReaderTest extends TestCase { Reader reader = readerFactory.createReader(in); reader.addObjectReader(Types.BATCH, batchReader); - assertEquals(batch, reader.readUserDefined(Types.BATCH, Batch.class)); + assertEquals(batch, reader.readStruct(Types.BATCH, Batch.class)); context.assertIsSatisfied(); } private byte[] createBatch(int size) throws Exception { ByteArrayOutputStream out = new ByteArrayOutputStream(size); Writer w = writerFactory.createWriter(out); - w.writeUserDefinedId(Types.BATCH); + w.writeStructId(Types.BATCH); w.writeListStart(); // We're using a fake message reader, so it's OK to use a fake message - w.writeUserDefinedId(Types.MESSAGE); + w.writeStructId(Types.MESSAGE); w.writeBytes(new byte[size - 10]); w.writeListEnd(); byte[] b = out.toByteArray(); @@ -157,7 +157,7 @@ public class BatchReaderTest extends TestCase { private byte[] createEmptyBatch() throws Exception { ByteArrayOutputStream out = new ByteArrayOutputStream(); Writer w = writerFactory.createWriter(out); - w.writeUserDefinedId(Types.BATCH); + w.writeStructId(Types.BATCH); w.writeListStart(); w.writeListEnd(); return out.toByteArray(); @@ -166,7 +166,7 @@ public class BatchReaderTest extends TestCase { private class TestMessageReader implements ObjectReader<Message> { public Message readObject(Reader r) throws IOException { - r.readUserDefinedId(Types.MESSAGE); + r.readStructId(Types.MESSAGE); r.readBytes(); return message; } diff --git a/test/net/sf/briar/protocol/RequestReaderTest.java b/test/net/sf/briar/protocol/RequestReaderTest.java index e3f8ddcb5dd26e7d8d184d36ec75247746df937b..1b214e937951d2837f3f37570342a685a3eeee50 100644 --- a/test/net/sf/briar/protocol/RequestReaderTest.java +++ b/test/net/sf/briar/protocol/RequestReaderTest.java @@ -47,7 +47,7 @@ public class RequestReaderTest extends TestCase { reader.addObjectReader(Types.REQUEST, requestReader); try { - reader.readUserDefined(Types.REQUEST, Request.class); + reader.readStruct(Types.REQUEST, Request.class); fail(); } catch(FormatException expected) {} context.assertIsSatisfied(); @@ -69,7 +69,7 @@ public class RequestReaderTest extends TestCase { Reader reader = readerFactory.createReader(in); reader.addObjectReader(Types.REQUEST, requestReader); - assertEquals(request, reader.readUserDefined(Types.REQUEST, + assertEquals(request, reader.readStruct(Types.REQUEST, Request.class)); context.assertIsSatisfied(); } @@ -99,7 +99,7 @@ public class RequestReaderTest extends TestCase { RequestReader requestReader = new RequestReader(new RequestFactoryImpl()); reader.addObjectReader(Types.REQUEST, requestReader); - Request r = reader.readUserDefined(Types.REQUEST, Request.class); + Request r = reader.readStruct(Types.REQUEST, Request.class); BitSet decoded = r.getBitmap(); // Check that the decoded BitSet matches the original - we can't // use equals() because of padding, but the first i bits should @@ -115,7 +115,7 @@ public class RequestReaderTest extends TestCase { private byte[] createRequest(boolean tooBig) throws Exception { ByteArrayOutputStream out = new ByteArrayOutputStream(); Writer w = writerFactory.createWriter(out); - w.writeUserDefinedId(Types.REQUEST); + w.writeStructId(Types.REQUEST); // Allow one byte for the REQUEST tag, one byte for the BYTES tag, // and five bytes for the length as an int32 int size = ProtocolConstants.MAX_PACKET_LENGTH - 7; @@ -128,7 +128,7 @@ public class RequestReaderTest extends TestCase { private byte[] createRequest(byte[] bitmap) throws Exception { ByteArrayOutputStream out = new ByteArrayOutputStream(); Writer w = writerFactory.createWriter(out); - w.writeUserDefinedId(Types.REQUEST); + w.writeStructId(Types.REQUEST); w.writeBytes(bitmap); return out.toByteArray(); } diff --git a/test/net/sf/briar/serial/ReaderImplTest.java b/test/net/sf/briar/serial/ReaderImplTest.java index 10e498cff17fc95ff5b49dbce281a3fe7c183c6b..62bdd4e454134b8fc5ab20795b2175346ee4bbb3 100644 --- a/test/net/sf/briar/serial/ReaderImplTest.java +++ b/test/net/sf/briar/serial/ReaderImplTest.java @@ -371,41 +371,41 @@ public class ReaderImplTest extends TestCase { } @Test - public void testReadUserDefined() throws Exception { + public void testReadStruct() throws Exception { setContents("C0" + "83666F6F" + "EF" + "FF" + "83666F6F"); - // Add object readers for two user-defined types + // Add object readers for two structs r.addObjectReader(0, new ObjectReader<Foo>() { public Foo readObject(Reader r) throws IOException { - r.readUserDefinedId(0); + r.readStructId(0); return new Foo(r.readString()); } }); r.addObjectReader(255, new ObjectReader<Bar>() { public Bar readObject(Reader r) throws IOException { - r.readUserDefinedId(255); + r.readStructId(255); return new Bar(r.readString()); } }); - // Test both tag formats, short and long - assertTrue(r.hasUserDefined(0)); - assertEquals("foo", r.readUserDefined(0, Foo.class).s); - assertTrue(r.hasUserDefined(255)); - assertEquals("foo", r.readUserDefined(255, Bar.class).s); + // Test both ID formats, short and long + assertTrue(r.hasStruct(0)); + assertEquals("foo", r.readStruct(0, Foo.class).s); + assertTrue(r.hasStruct(255)); + assertEquals("foo", r.readStruct(255, Bar.class).s); } @Test - public void testReadUserDefinedWithConsumer() throws Exception { + public void testReadStructWithConsumer() throws Exception { setContents("C0" + "83666F6F" + "EF" + "FF" + "83666F6F"); - // Add object readers for two user-defined types + // Add object readers for two structs r.addObjectReader(0, new ObjectReader<Foo>() { public Foo readObject(Reader r) throws IOException { - r.readUserDefinedId(0); + r.readStructId(0); return new Foo(r.readString()); } }); r.addObjectReader(255, new ObjectReader<Bar>() { public Bar readObject(Reader r) throws IOException { - r.readUserDefinedId(255); + r.readStructId(255); return new Bar(r.readString()); } }); @@ -421,23 +421,23 @@ public class ReaderImplTest extends TestCase { out.write(b, off, len); } }); - // Test both tag formats, short and long - assertTrue(r.hasUserDefined(0)); - assertEquals("foo", r.readUserDefined(0, Foo.class).s); - assertTrue(r.hasUserDefined(255)); - assertEquals("foo", r.readUserDefined(255, Bar.class).s); + // Test both ID formats, short and long + assertTrue(r.hasStruct(0)); + assertEquals("foo", r.readStruct(0, Foo.class).s); + assertTrue(r.hasStruct(255)); + assertEquals("foo", r.readStruct(255, Bar.class).s); // Check that everything was passed to the consumer assertEquals("C0" + "83666F6F" + "EF" + "FF" + "83666F6F", StringUtils.toHexString(out.toByteArray())); } @Test - public void testUnknownTagThrowsFormatException() throws Exception { + public void testUnknownStructIdThrowsFormatException() throws Exception { setContents("C0" + "83666F6F"); - assertTrue(r.hasUserDefined(0)); - // No object reader has been added for tag 0 + assertTrue(r.hasStruct(0)); + // No object reader has been added for struct ID 0 try { - r.readUserDefined(0, Foo.class); + r.readStruct(0, Foo.class); fail(); } catch(FormatException expected) {} } @@ -445,17 +445,17 @@ public class ReaderImplTest extends TestCase { @Test public void testWrongClassThrowsFormatException() throws Exception { setContents("C0" + "83666F6F"); - // Add an object reader for tag 0, class Foo + // Add an object reader for struct ID 0, class Foo r.addObjectReader(0, new ObjectReader<Foo>() { public Foo readObject(Reader r) throws IOException { - r.readUserDefinedId(0); + r.readStructId(0); return new Foo(r.readString()); } }); - assertTrue(r.hasUserDefined(0)); + assertTrue(r.hasStruct(0)); // Trying to read the object as class Bar should throw a FormatException try { - r.readUserDefined(0, Bar.class); + r.readStruct(0, Bar.class); fail(); } catch(FormatException expected) {} } @@ -463,10 +463,10 @@ public class ReaderImplTest extends TestCase { @Test public void testReadListUsingObjectReader() throws Exception { setContents("A" + "1" + "C0" + "83666F6F"); - // Add an object reader for a user-defined type + // Add an object reader for a struct r.addObjectReader(0, new ObjectReader<Foo>() { public Foo readObject(Reader r) throws IOException { - r.readUserDefinedId(0); + r.readStructId(0); return new Foo(r.readString()); } }); @@ -479,16 +479,16 @@ public class ReaderImplTest extends TestCase { @Test public void testReadMapUsingObjectReader() throws Exception { setContents("B" + "1" + "C0" + "83666F6F" + "C1" + "83626172"); - // Add object readers for two user-defined types + // Add object readers for two structs r.addObjectReader(0, new ObjectReader<Foo>() { public Foo readObject(Reader r) throws IOException { - r.readUserDefinedId(0); + r.readStructId(0); return new Foo(r.readString()); } }); r.addObjectReader(1, new ObjectReader<Bar>() { public Bar readObject(Reader r) throws IOException { - r.readUserDefinedId(1); + r.readStructId(1); return new Bar(r.readString()); } }); diff --git a/test/net/sf/briar/serial/WriterImplTest.java b/test/net/sf/briar/serial/WriterImplTest.java index 72b2eace7bff74edc88eeff5b7021903535dff74..9cfb2881b0f8a3ec22470066d895bf73925da597 100644 --- a/test/net/sf/briar/serial/WriterImplTest.java +++ b/test/net/sf/briar/serial/WriterImplTest.java @@ -265,19 +265,19 @@ public class WriterImplTest extends TestCase { } @Test - public void testWriteShortUserDefinedTag() throws IOException { - w.writeUserDefinedId(0); - w.writeUserDefinedId(31); - // SHORT_USER tag (3 bits), 0 (5 bits), SHORT_USER tag (3 bits), + public void testWriteShortStructId() throws IOException { + w.writeStructId(0); + w.writeStructId(31); + // SHORT_STRUCT tag (3 bits), 0 (5 bits), SHORT_STRUCT tag (3 bits), // 31 (5 bits) checkContents("C0" + "DF"); } @Test - public void testWriteUserDefinedTag() throws IOException { - w.writeUserDefinedId(32); - w.writeUserDefinedId(255); - // USER tag, 32 as uint8, USER tag, 255 as uint8 + public void testWriteStructId() throws IOException { + w.writeStructId(32); + w.writeStructId(255); + // STRUCT tag, 32 as uint8, STRUCT tag, 255 as uint8 checkContents("EF" + "20" + "EF" + "FF"); }