Readers, writers and factories for subscription and transport updates.

This commit is contained in:
akwizgran
2011-07-23 21:46:47 +01:00
parent 30271c14ce
commit 941460e3bc
34 changed files with 423 additions and 53 deletions

View File

@@ -0,0 +1,38 @@
package net.sf.briar.protocol;
import java.io.IOException;
import java.util.Collection;
import net.sf.briar.api.protocol.Group;
import net.sf.briar.api.protocol.Subscriptions;
import net.sf.briar.api.protocol.Tags;
import net.sf.briar.api.serial.ObjectReader;
import net.sf.briar.api.serial.Reader;
class SubscriptionReader implements ObjectReader<Subscriptions> {
private final ObjectReader<Group> groupReader;
private final SubscriptionFactory subscriptionFactory;
SubscriptionReader(ObjectReader<Group> groupReader,
SubscriptionFactory subscriptionFactory) {
this.groupReader = groupReader;
this.subscriptionFactory = subscriptionFactory;
}
public Subscriptions readObject(Reader r) throws IOException {
// Initialise the consumer
CountingConsumer counting =
new CountingConsumer(Subscriptions.MAX_SIZE);
// Read the data
r.addConsumer(counting);
r.readUserDefinedTag(Tags.SUBSCRIPTIONS);
r.addObjectReader(Tags.GROUP, groupReader);
Collection<Group> subs = r.readList(Group.class);
r.removeObjectReader(Tags.GROUP);
long timestamp = r.readInt64();
r.removeConsumer(counting);
// Build and return the subscriptions update
return subscriptionFactory.createSubscriptions(subs, timestamp);
}
}