/* * Copyright (C) 2015 Actor LLC. <https://actor.im> */ package im.actor.runtime.storage; import com.google.j2objc.annotations.ObjectiveCName; import java.util.List; import im.actor.runtime.actors.messages.Void; import im.actor.runtime.promise.Promise; public interface KeyValueStorage { /** * Adding new or replacing old record * * @param key record key * @param data record raw data */ @ObjectiveCName("addOrUpdateItemWithKey:withData:") void addOrUpdateItem(long key, byte[] data); /** * Adding new or replacing old records * * @param values records */ @ObjectiveCName("addOrUpdateItems:") void addOrUpdateItems(List<KeyValueRecord> values); /** * Removing record by key * * @param key record key */ @ObjectiveCName("removeItemWithKey:") void removeItem(long key); /** * Removing records by keys * * @param keys record keys */ @ObjectiveCName("removeItemsWithKeys:") void removeItems(long[] keys); /** * Loading item by key * * @param key record key * @return result or null if not found */ @ObjectiveCName("loadItemWithKey:") byte[] loadItem(long key); /** * Loading items by keys * * @param keys record keys * @return all loaded items */ @ObjectiveCName("loadItems:") List<KeyValueRecord> loadItems(long[] keys); /** * Loading all items from storage * * @return all items */ @ObjectiveCName("loadAllItems") List<KeyValueRecord> loadAllItems(); /** * Clearing storage */ @ObjectiveCName("clear") void clear(); }