/*
* Copyright (C) 2015 Actor LLC. <https://actor.im>
*/
package im.actor.core.modules.messaging.actions.entity;
import java.io.IOException;
import java.util.Collection;
import java.util.HashMap;
import im.actor.runtime.bser.Bser;
import im.actor.runtime.bser.BserObject;
import im.actor.runtime.bser.BserValues;
import im.actor.runtime.bser.BserWriter;
import im.actor.core.entity.Peer;
public class PlainCursorsStorage extends BserObject {
public static PlainCursorsStorage fromBytes(byte[] data) throws IOException {
return Bser.parse(new PlainCursorsStorage(), data);
}
private HashMap<Peer, PlainCursor> cursors = new HashMap<Peer, PlainCursor>();
public PlainCursor getCursor(Peer peer) {
if (!cursors.containsKey(peer)) {
cursors.put(peer, new PlainCursor(peer, 0, 0));
}
return cursors.get(peer);
}
public void putCursor(PlainCursor cursor) {
cursors.put(cursor.getPeer(), cursor);
}
public Collection<PlainCursor> getAllCursors() {
return cursors.values();
}
@Override
public void parse(BserValues values) throws IOException {
for (byte[] data : values.getRepeatedBytes(1)) {
try {
PlainCursor plainCursor = PlainCursor.fromBytes(data);
cursors.put(plainCursor.getPeer(), plainCursor);
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public void serialize(BserWriter writer) throws IOException {
for (PlainCursor cursor : cursors.values()) {
writer.writeObject(1, cursor);
}
}
}