package im.actor.core.modules.api.entity; import java.io.IOException; import java.util.ArrayList; import im.actor.runtime.bser.Bser; import im.actor.runtime.bser.BserObject; import im.actor.runtime.bser.BserValues; import im.actor.runtime.bser.BserWriter; public class PersistentStorage extends BserObject { public static PersistentStorage fromBytes(byte[] data) throws IOException { return Bser.parse(new PersistentStorage(), data); } private ArrayList<StoredRequest> requests = new ArrayList<StoredRequest>(); private ArrayList<CursorStoredRequest> cursorRequests = new ArrayList<CursorStoredRequest>(); public PersistentStorage() { } public ArrayList<StoredRequest> getRequests() { return requests; } public ArrayList<CursorStoredRequest> getCursorRequests() { return cursorRequests; } public CursorStoredRequest findCursorRequest(String name) { for (CursorStoredRequest r : cursorRequests) { if (name.equals(r.getName())) { return r; } } return null; } @Override public void parse(BserValues values) throws IOException { requests.clear(); for (byte[] r : values.getRepeatedBytes(1)) { try { requests.add(StoredRequest.fromBytes(r)); } catch (IOException e) { // Ignoring unknown requests e.printStackTrace(); } } cursorRequests.clear(); for (byte[] r : values.getRepeatedBytes(2)) { try { cursorRequests.add(CursorStoredRequest.fromBytes(r)); } catch (IOException e) { // Ignoring unknown requests e.printStackTrace(); } } } @Override public void serialize(BserWriter writer) throws IOException { for (StoredRequest req : requests) { writer.writeObject(1, req); } for (CursorStoredRequest req : cursorRequests) { writer.writeObject(2, req); } } }