mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-20 22:59:54 +01:00
Readers, writers and factories for subscription and transport updates.
This commit is contained in:
38
components/net/sf/briar/protocol/SubscriptionReader.java
Normal file
38
components/net/sf/briar/protocol/SubscriptionReader.java
Normal 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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user