| package net.onrc.onos.core.datastore; |
| |
| |
| /** |
| * Interface for a class to represent a Table in a Key-Value store. |
| */ |
| public interface IKVTable { |
| |
| /** |
| * Version number which represents that the object does not exist, or has |
| * never been read the DB before. |
| */ |
| public long getVersionNonexistant(); |
| |
| /** |
| * Interface for a class to represent an entry in Table. |
| */ |
| public static interface IKVEntry { |
| |
| public byte[] getKey(); |
| |
| public byte[] getValue(); |
| |
| public long getVersion(); |
| |
| } |
| |
| /** |
| * @return ID to identify this table. |
| */ |
| public IKVTableID getTableId(); |
| |
| /** |
| * Create a Key-Value entry on table. |
| * |
| * @param key |
| * @param value |
| * @return version of the created entry |
| * @throws ObjectExistsException |
| */ |
| public long create(byte[] key, byte[] value) throws ObjectExistsException; |
| |
| /** |
| * Create a Key-Value entry on table, without existence checking. |
| * |
| * @param key |
| * @param value |
| * @return version of the created entry |
| */ |
| public long forceCreate(byte[] key, byte[] value); |
| |
| /** |
| * Read a Key-Value entry from table. |
| * |
| * @param key |
| * @return Corresponding {@link IKVEntry} |
| * @throws ObjectDoesntExistException |
| */ |
| public IKVEntry read(byte[] key) throws ObjectDoesntExistException; |
| |
| /** |
| * Update an existing Key-Value entry in table. |
| * |
| * @param key |
| * @param value |
| * @param version expected version in the data store |
| * @return version after update |
| * @throws ObjectDoesntExistException |
| * @throws WrongVersionException |
| */ |
| public long update(byte[] key, byte[] value, long version) |
| throws ObjectDoesntExistException, WrongVersionException; |
| |
| /** |
| * Update an existing Key-Value entry in table, without checking version. |
| * |
| * @param key |
| * @param value |
| * @return version after update |
| * @throws ObjectDoesntExistException |
| */ |
| public long update(byte[] key, byte[] value) |
| throws ObjectDoesntExistException; |
| |
| /** |
| * Remove an existing Key-Value entry in table. |
| * |
| * @param key |
| * @param version expected version in the data store |
| * @return version of removed object |
| * @throws ObjectDoesntExistException |
| * @throws WrongVersionException |
| */ |
| public long delete(byte[] key, long version) |
| throws ObjectDoesntExistException, WrongVersionException; |
| |
| /** |
| * Remove a Key-Value entry in table. |
| * |
| * @param key |
| * @return version of removed object or non existant version if it did not exist. |
| */ |
| public long forceDelete(byte[] key); |
| |
| /** |
| * Get all the entries in table. |
| * |
| * @return entries in this table. |
| */ |
| public Iterable<IKVEntry> getAllEntries(); |
| } |