aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/DatabaseProxy.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/DatabaseProxy.java')
-rw-r--r--framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/DatabaseProxy.java224
1 files changed, 224 insertions, 0 deletions
diff --git a/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/DatabaseProxy.java b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/DatabaseProxy.java
new file mode 100644
index 00000000..95f9e39a
--- /dev/null
+++ b/framework/src/onos/core/store/dist/src/main/java/org/onosproject/store/consistent/impl/DatabaseProxy.java
@@ -0,0 +1,224 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onosproject.store.consistent.impl;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.CompletableFuture;
+
+import org.onosproject.store.service.Transaction;
+import org.onosproject.store.service.Versioned;
+
+/**
+ * Database proxy.
+ */
+public interface DatabaseProxy<K, V> {
+
+ /**
+ * Returns a set of all map names.
+ *
+ * @return A completable future to be completed with the result once complete.
+ */
+ CompletableFuture<Set<String>> maps();
+
+ /**
+ * Returns a mapping from counter name to next value.
+ *
+ * @return A completable future to be completed with the result once complete.
+ */
+ CompletableFuture<Map<String, Long>> counters();
+
+ /**
+ * Returns the number of entries in map.
+ * @param mapName map name
+ * @return A completable future to be completed with the result once complete.
+ */
+ CompletableFuture<Integer> mapSize(String mapName);
+
+ /**
+ * Checks whether the map is empty.
+ *
+ * @param mapName map name
+ * @return A completable future to be completed with the result once complete.
+ */
+ CompletableFuture<Boolean> mapIsEmpty(String mapName);
+
+ /**
+ * Checks whether the map contains a key.
+ *
+ * @param mapName map name
+ * @param key key to check.
+ * @return A completable future to be completed with the result once complete.
+ */
+ CompletableFuture<Boolean> mapContainsKey(String mapName, K key);
+
+ /**
+ * Checks whether the map contains a value.
+ *
+ * @param mapName map name
+ * @param value The value to check.
+ * @return A completable future to be completed with the result once complete.
+ */
+ CompletableFuture<Boolean> mapContainsValue(String mapName, V value);
+
+ /**
+ * Gets a value from the map.
+ *
+ * @param mapName map name
+ * @param key The key to get.
+ * @return A completable future to be completed with the result once complete.
+ */
+ CompletableFuture<Versioned<V>> mapGet(String mapName, K key);
+
+ /**
+ * Updates the map.
+ *
+ * @param mapName map name
+ * @param key The key to set
+ * @param valueMatch match for checking existing value
+ * @param versionMatch match for checking existing version
+ * @param value new value
+ * @return A completable future to be completed with the result once complete
+ */
+ CompletableFuture<Result<UpdateResult<K, V>>> mapUpdate(
+ String mapName, K key, Match<V> valueMatch, Match<Long> versionMatch, V value);
+
+ /**
+ * Clears the map.
+ *
+ * @param mapName map name
+ * @return A completable future to be completed with the result once complete.
+ */
+ CompletableFuture<Result<Void>> mapClear(String mapName);
+
+ /**
+ * Gets a set of keys in the map.
+ *
+ * @param mapName map name
+ * @return A completable future to be completed with the result once complete.
+ */
+ CompletableFuture<Set<K>> mapKeySet(String mapName);
+
+ /**
+ * Gets a collection of values in the map.
+ *
+ * @param mapName map name
+ * @return A completable future to be completed with the result once complete.
+ */
+ CompletableFuture<Collection<Versioned<V>>> mapValues(String mapName);
+
+ /**
+ * Gets a set of entries in the map.
+ *
+ * @param mapName map name
+ * @return A completable future to be completed with the result once complete.
+ */
+ CompletableFuture<Set<Map.Entry<K, Versioned<V>>>> mapEntrySet(String mapName);
+
+ /**
+ * Atomically add the given value to current value of the specified counter.
+ *
+ * @param counterName counter name
+ * @param delta value to add
+ * @return updated value
+ */
+ CompletableFuture<Long> counterAddAndGet(String counterName, long delta);
+
+ /**
+ * Atomically add the given value to current value of the specified counter.
+ *
+ * @param counterName counter name
+ * @param delta value to add
+ * @return previous value
+ */
+ CompletableFuture<Long> counterGetAndAdd(String counterName, long delta);
+
+ /**
+ * Returns the current value of the specified atomic counter.
+ *
+ * @param counterName counter name
+ * @return current value
+ */
+ CompletableFuture<Long> counterGet(String counterName);
+
+ /**
+ * Returns the size of queue.
+ * @param queueName queue name
+ * @return queue size
+ */
+ CompletableFuture<Long> queueSize(String queueName);
+
+ /**
+ * Inserts an entry into the queue.
+ * @param queueName queue name
+ * @param entry queue entry
+ * @return void future
+ */
+ CompletableFuture<Void> queuePush(String queueName, byte[] entry);
+
+ /**
+ * Removes an entry from the queue if the queue is non-empty.
+ * @param queueName queue name
+ * @return entry future. Can be completed with null if queue is empty
+ */
+ CompletableFuture<byte[]> queuePop(String queueName);
+
+ /**
+ * Returns but does not remove an entry from the queue.
+ * @param queueName queue name
+ * @return entry. Can be null if queue is empty
+ */
+ CompletableFuture<byte[]> queuePeek(String queueName);
+
+ /**
+ * Prepare and commit the specified transaction.
+ *
+ * @param transaction transaction to commit (after preparation)
+ * @return A completable future to be completed with the result once complete
+ */
+ CompletableFuture<CommitResponse> prepareAndCommit(Transaction transaction);
+
+ /**
+ * Prepare the specified transaction for commit. A successful prepare implies
+ * all the affected resources are locked thus ensuring no concurrent updates can interfere.
+ *
+ * @param transaction transaction to prepare (for commit)
+ * @return A completable future to be completed with the result once complete. The future is completed
+ * with true if the transaction is successfully prepared i.e. all pre-conditions are met and
+ * applicable resources locked.
+ */
+ CompletableFuture<Boolean> prepare(Transaction transaction);
+
+ /**
+ * Commit the specified transaction. A successful commit implies
+ * all the updates are applied, are now durable and are now visible externally.
+ *
+ * @param transaction transaction to commit
+ * @return A completable future to be completed with the result once complete
+ */
+ CompletableFuture<CommitResponse> commit(Transaction transaction);
+
+ /**
+ * Rollback the specified transaction. A successful rollback implies
+ * all previously acquired locks for the affected resources are released.
+ *
+ * @param transaction transaction to rollback
+ * @return A completable future to be completed with the result once complete
+ */
+ CompletableFuture<Boolean> rollback(Transaction transaction);
+}