package im.actor.runtime.storage.memory;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import im.actor.runtime.storage.KeyValueRecord;
import im.actor.runtime.storage.KeyValueStorage;
public class MemoryKeyValueStorage implements KeyValueStorage {
private HashMap<Long, byte[]> records = new HashMap<Long, byte[]>();
@Override
public void addOrUpdateItem(long key, byte[] data) {
records.put(key, data);
}
@Override
public void addOrUpdateItems(List<KeyValueRecord> values) {
for (KeyValueRecord r : values) {
records.put(r.getId(), r.getData());
}
}
@Override
public void removeItem(long key) {
records.remove(key);
}
@Override
public void removeItems(long[] keys) {
for (long k : keys) {
records.remove(k);
}
}
@Override
public byte[] loadItem(long key) {
return records.get(key);
}
@Override
public List<KeyValueRecord> loadItems(long[] keys) {
ArrayList<KeyValueRecord> res = new ArrayList<KeyValueRecord>();
for (long id : keys) {
byte[] data = loadItem(id);
if (data != null) {
res.add(new KeyValueRecord(id, data));
}
}
return res;
}
@Override
public List<KeyValueRecord> loadAllItems() {
ArrayList<KeyValueRecord> res = new ArrayList<KeyValueRecord>();
for (long id : records.keySet()) {
res.add(new KeyValueRecord(id, records.get(id)));
}
return res;
}
@Override
public void clear() {
records.clear();
}
}