Add getAll to DatabaseService
Change-Id: I5fb9d52244b005dfc22e7faaa68341be3c3f3725
Showing
4 changed files
with
34 additions
and
0 deletions
| 1 | package org.onlab.onos.store.service; | 1 | package org.onlab.onos.store.service; |
| 2 | 2 | ||
| 3 | +import java.util.Map; | ||
| 4 | + | ||
| 3 | /** | 5 | /** |
| 4 | * Service interface for a strongly consistent and durable | 6 | * Service interface for a strongly consistent and durable |
| 5 | * key value data store. | 7 | * key value data store. |
| ... | @@ -15,6 +17,14 @@ public interface DatabaseService { | ... | @@ -15,6 +17,14 @@ public interface DatabaseService { |
| 15 | VersionedValue get(String tableName, String key); | 17 | VersionedValue get(String tableName, String key); |
| 16 | 18 | ||
| 17 | /** | 19 | /** |
| 20 | + * Reads the whole table. | ||
| 21 | + * | ||
| 22 | + * @param tableName name of the table associated with this operation. | ||
| 23 | + * @return the whole table | ||
| 24 | + */ | ||
| 25 | + Map<String, VersionedValue> getAll(String tableName); | ||
| 26 | + | ||
| 27 | + /** | ||
| 18 | * Associate the key with a value. | 28 | * Associate the key with a value. |
| 19 | * @param tableName table name in which this key/value resides. | 29 | * @param tableName table name in which this key/value resides. |
| 20 | * @param key key with which the specified value is to be associated | 30 | * @param key key with which the specified value is to be associated | ... | ... |
| ... | @@ -3,6 +3,7 @@ package org.onlab.onos.store.service.impl; | ... | @@ -3,6 +3,7 @@ package org.onlab.onos.store.service.impl; |
| 3 | import static com.google.common.base.Preconditions.checkNotNull; | 3 | import static com.google.common.base.Preconditions.checkNotNull; |
| 4 | 4 | ||
| 5 | import java.util.List; | 5 | import java.util.List; |
| 6 | +import java.util.Map; | ||
| 6 | import java.util.Set; | 7 | import java.util.Set; |
| 7 | import java.util.concurrent.CompletableFuture; | 8 | import java.util.concurrent.CompletableFuture; |
| 8 | import java.util.concurrent.ExecutionException; | 9 | import java.util.concurrent.ExecutionException; |
| ... | @@ -13,6 +14,7 @@ import org.onlab.onos.store.service.BatchReadRequest; | ... | @@ -13,6 +14,7 @@ import org.onlab.onos.store.service.BatchReadRequest; |
| 13 | import org.onlab.onos.store.service.BatchWriteRequest; | 14 | import org.onlab.onos.store.service.BatchWriteRequest; |
| 14 | import org.onlab.onos.store.service.DatabaseException; | 15 | import org.onlab.onos.store.service.DatabaseException; |
| 15 | import org.onlab.onos.store.service.ReadResult; | 16 | import org.onlab.onos.store.service.ReadResult; |
| 17 | +import org.onlab.onos.store.service.VersionedValue; | ||
| 16 | import org.onlab.onos.store.service.WriteResult; | 18 | import org.onlab.onos.store.service.WriteResult; |
| 17 | 19 | ||
| 18 | /** | 20 | /** |
| ... | @@ -95,4 +97,13 @@ public class DatabaseClient { | ... | @@ -95,4 +97,13 @@ public class DatabaseClient { |
| 95 | throw new DatabaseException(e); | 97 | throw new DatabaseException(e); |
| 96 | } | 98 | } |
| 97 | } | 99 | } |
| 100 | + | ||
| 101 | + public Map<String, VersionedValue> getAll(String tableName) { | ||
| 102 | + CompletableFuture<Map<String, VersionedValue>> future = copycat.submit("getAll", tableName); | ||
| 103 | + try { | ||
| 104 | + return future.get(); | ||
| 105 | + } catch (InterruptedException | ExecutionException e) { | ||
| 106 | + throw new DatabaseException(e); | ||
| 107 | + } | ||
| 108 | + } | ||
| 98 | } | 109 | } | ... | ... |
| ... | @@ -226,6 +226,12 @@ public class DatabaseManager implements DatabaseService, DatabaseAdminService { | ... | @@ -226,6 +226,12 @@ public class DatabaseManager implements DatabaseService, DatabaseAdminService { |
| 226 | } | 226 | } |
| 227 | 227 | ||
| 228 | @Override | 228 | @Override |
| 229 | + public Map<String, VersionedValue> getAll(String tableName) { | ||
| 230 | + return client.getAll(tableName); | ||
| 231 | + } | ||
| 232 | + | ||
| 233 | + | ||
| 234 | + @Override | ||
| 229 | public BatchReadResult batchRead(BatchReadRequest batchRequest) { | 235 | public BatchReadResult batchRead(BatchReadRequest batchRequest) { |
| 230 | return new BatchReadResult(client.batchRead(batchRequest)); | 236 | return new BatchReadResult(client.batchRead(batchRequest)); |
| 231 | } | 237 | } | ... | ... |
| ... | @@ -31,6 +31,7 @@ import org.onlab.util.KryoNamespace; | ... | @@ -31,6 +31,7 @@ import org.onlab.util.KryoNamespace; |
| 31 | import org.slf4j.Logger; | 31 | import org.slf4j.Logger; |
| 32 | 32 | ||
| 33 | import com.google.common.base.MoreObjects; | 33 | import com.google.common.base.MoreObjects; |
| 34 | +import com.google.common.collect.ImmutableMap; | ||
| 34 | import com.google.common.collect.ImmutableSet; | 35 | import com.google.common.collect.ImmutableSet; |
| 35 | import com.google.common.collect.Lists; | 36 | import com.google.common.collect.Lists; |
| 36 | import com.google.common.collect.Maps; | 37 | import com.google.common.collect.Maps; |
| ... | @@ -148,6 +149,12 @@ public class DatabaseStateMachine implements StateMachine { | ... | @@ -148,6 +149,12 @@ public class DatabaseStateMachine implements StateMachine { |
| 148 | return results; | 149 | return results; |
| 149 | } | 150 | } |
| 150 | 151 | ||
| 152 | + @Query | ||
| 153 | + public Map<String, VersionedValue> getAll(String tableName) { | ||
| 154 | + return ImmutableMap.copyOf(state.getTable(tableName)); | ||
| 155 | + } | ||
| 156 | + | ||
| 157 | + | ||
| 151 | WriteStatus checkIfApplicable(WriteRequest request, | 158 | WriteStatus checkIfApplicable(WriteRequest request, |
| 152 | VersionedValue value) { | 159 | VersionedValue value) { |
| 153 | 160 | ... | ... |
-
Please register or login to post a comment