/*
* Copyright (C) 2015 Actor LLC. <https://actor.im>
*/
package im.actor.core.modules.notifications.entity;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import im.actor.core.modules.notifications.NotificationsQueue;
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 PendingStorage extends BserObject {
private int limit;
private int messagesCount = 0;
private int dialogsCount = 0;
public static PendingStorage fromBytes(byte[] data, int maxMessagesLimit) throws IOException {
return Bser.parse(new PendingStorage(maxMessagesLimit), data);
}
private NotificationsQueue<PendingNotification> notifications;
public PendingStorage(int maxMessagesLimit) {
limit = maxMessagesLimit;
notifications = new NotificationsQueue<>(limit);
}
public NotificationsQueue<PendingNotification> getNotifications() {
return notifications;
}
public int getMessagesCount() {
return messagesCount;
}
public void setMessagesCount(int messagesCount) {
this.messagesCount = messagesCount;
}
public int getDialogsCount() {
return dialogsCount;
}
public void setDialogsCount(int dialogsCount) {
this.dialogsCount = dialogsCount;
}
@Override
public void parse(BserValues values) throws IOException {
int count = values.getRepeatedCount(1);
if (count > 0) {
ArrayList<PendingNotification> stubs = new ArrayList<PendingNotification>();
for (int i = 0; i < count; i++) {
stubs.add(new PendingNotification());
}
notifications = new NotificationsQueue<>(limit).addAllChain(values.getRepeatedObj(1, stubs));
}
messagesCount = values.getInt(2);
dialogsCount = values.getInt(3);
}
@Override
public void serialize(BserWriter writer) throws IOException {
writer.writeRepeatedObj(1, notifications);
writer.writeInt(2, messagesCount);
writer.writeInt(3, dialogsCount);
}
}