Committed by
Gerrit Code Review
minor name changes and javadoc
Change-Id: I43a05d75392efad9ac004867027a31adcc18c6f5
Showing
8 changed files
with
62 additions
and
1 deletions
... | @@ -58,4 +58,12 @@ public interface AsyncAtomicCounter { | ... | @@ -58,4 +58,12 @@ public interface AsyncAtomicCounter { |
58 | * @return current value | 58 | * @return current value |
59 | */ | 59 | */ |
60 | CompletableFuture<Long> get(); | 60 | CompletableFuture<Long> get(); |
61 | + | ||
62 | + | ||
63 | + /** | ||
64 | + * Atomically sets the given value to the current value. | ||
65 | + * | ||
66 | + * @return future void | ||
67 | + */ | ||
68 | + CompletableFuture<Void> set(long value); | ||
61 | } | 69 | } | ... | ... |
... | @@ -51,6 +51,14 @@ public interface AtomicCounter { | ... | @@ -51,6 +51,14 @@ public interface AtomicCounter { |
51 | long addAndGet(long delta); | 51 | long addAndGet(long delta); |
52 | 52 | ||
53 | /** | 53 | /** |
54 | + * Atomically sets the given value to the current value. | ||
55 | + * | ||
56 | + * @param value the value to set | ||
57 | + */ | ||
58 | + void set(long value); | ||
59 | + | ||
60 | + | ||
61 | + /** | ||
54 | * Returns the current value of the counter without modifying it. | 62 | * Returns the current value of the counter without modifying it. |
55 | * | 63 | * |
56 | * @return current value | 64 | * @return current value | ... | ... |
... | @@ -48,6 +48,11 @@ public final class TestAtomicCounter implements AtomicCounter { | ... | @@ -48,6 +48,11 @@ public final class TestAtomicCounter implements AtomicCounter { |
48 | } | 48 | } |
49 | 49 | ||
50 | @Override | 50 | @Override |
51 | + public void set(long value) { | ||
52 | + this.value.set(value); | ||
53 | + } | ||
54 | + | ||
55 | + @Override | ||
51 | public long get() { | 56 | public long get() { |
52 | return value.get(); | 57 | return value.get(); |
53 | } | 58 | } | ... | ... |
... | @@ -45,6 +45,7 @@ public interface DatabaseProxy<K, V> { | ... | @@ -45,6 +45,7 @@ public interface DatabaseProxy<K, V> { |
45 | 45 | ||
46 | /** | 46 | /** |
47 | * Returns the number of entries in map. | 47 | * Returns the number of entries in map. |
48 | + * | ||
48 | * @param mapName map name | 49 | * @param mapName map name |
49 | * @return A completable future to be completed with the result once complete. | 50 | * @return A completable future to be completed with the result once complete. |
50 | */ | 51 | */ |
... | @@ -148,6 +149,16 @@ public interface DatabaseProxy<K, V> { | ... | @@ -148,6 +149,16 @@ public interface DatabaseProxy<K, V> { |
148 | */ | 149 | */ |
149 | CompletableFuture<Long> counterGetAndAdd(String counterName, long delta); | 150 | CompletableFuture<Long> counterGetAndAdd(String counterName, long delta); |
150 | 151 | ||
152 | + | ||
153 | + /** | ||
154 | + * Atomically sets the given value to current value of the specified counter. | ||
155 | + * | ||
156 | + * @param counterName counter name | ||
157 | + * @param value value to set | ||
158 | + * @return void future | ||
159 | + */ | ||
160 | + CompletableFuture<Void> counterSet(String counterName, long value); | ||
161 | + | ||
151 | /** | 162 | /** |
152 | * Returns the current value of the specified atomic counter. | 163 | * Returns the current value of the specified atomic counter. |
153 | * | 164 | * |
... | @@ -158,6 +169,7 @@ public interface DatabaseProxy<K, V> { | ... | @@ -158,6 +169,7 @@ public interface DatabaseProxy<K, V> { |
158 | 169 | ||
159 | /** | 170 | /** |
160 | * Returns the size of queue. | 171 | * Returns the size of queue. |
172 | + * | ||
161 | * @param queueName queue name | 173 | * @param queueName queue name |
162 | * @return queue size | 174 | * @return queue size |
163 | */ | 175 | */ |
... | @@ -165,6 +177,7 @@ public interface DatabaseProxy<K, V> { | ... | @@ -165,6 +177,7 @@ public interface DatabaseProxy<K, V> { |
165 | 177 | ||
166 | /** | 178 | /** |
167 | * Inserts an entry into the queue. | 179 | * Inserts an entry into the queue. |
180 | + * | ||
168 | * @param queueName queue name | 181 | * @param queueName queue name |
169 | * @param entry queue entry | 182 | * @param entry queue entry |
170 | * @return void future | 183 | * @return void future |
... | @@ -173,6 +186,7 @@ public interface DatabaseProxy<K, V> { | ... | @@ -173,6 +186,7 @@ public interface DatabaseProxy<K, V> { |
173 | 186 | ||
174 | /** | 187 | /** |
175 | * Removes an entry from the queue if the queue is non-empty. | 188 | * Removes an entry from the queue if the queue is non-empty. |
189 | + * | ||
176 | * @param queueName queue name | 190 | * @param queueName queue name |
177 | * @return entry future. Can be completed with null if queue is empty | 191 | * @return entry future. Can be completed with null if queue is empty |
178 | */ | 192 | */ |
... | @@ -180,6 +194,7 @@ public interface DatabaseProxy<K, V> { | ... | @@ -180,6 +194,7 @@ public interface DatabaseProxy<K, V> { |
180 | 194 | ||
181 | /** | 195 | /** |
182 | * Returns but does not remove an entry from the queue. | 196 | * Returns but does not remove an entry from the queue. |
197 | + * | ||
183 | * @param queueName queue name | 198 | * @param queueName queue name |
184 | * @return entry. Can be null if queue is empty | 199 | * @return entry. Can be null if queue is empty |
185 | */ | 200 | */ | ... | ... |
... | @@ -18,6 +18,7 @@ package org.onosproject.store.consistent.impl; | ... | @@ -18,6 +18,7 @@ package org.onosproject.store.consistent.impl; |
18 | import org.onosproject.store.service.AsyncAtomicCounter; | 18 | import org.onosproject.store.service.AsyncAtomicCounter; |
19 | 19 | ||
20 | import java.util.concurrent.CompletableFuture; | 20 | import java.util.concurrent.CompletableFuture; |
21 | + | ||
21 | import static com.google.common.base.Preconditions.checkNotNull; | 22 | import static com.google.common.base.Preconditions.checkNotNull; |
22 | 23 | ||
23 | /** | 24 | /** |
... | @@ -38,6 +39,7 @@ public class DefaultAsyncAtomicCounter implements AsyncAtomicCounter { | ... | @@ -38,6 +39,7 @@ public class DefaultAsyncAtomicCounter implements AsyncAtomicCounter { |
38 | private static final String GET_AND_ADD = "getAndAdd"; | 39 | private static final String GET_AND_ADD = "getAndAdd"; |
39 | private static final String ADD_AND_GET = "addAndGet"; | 40 | private static final String ADD_AND_GET = "addAndGet"; |
40 | private static final String GET = "get"; | 41 | private static final String GET = "get"; |
42 | + private static final String SET = "set"; | ||
41 | 43 | ||
42 | public DefaultAsyncAtomicCounter(String name, | 44 | public DefaultAsyncAtomicCounter(String name, |
43 | Database database, | 45 | Database database, |
... | @@ -81,4 +83,11 @@ public class DefaultAsyncAtomicCounter implements AsyncAtomicCounter { | ... | @@ -81,4 +83,11 @@ public class DefaultAsyncAtomicCounter implements AsyncAtomicCounter { |
81 | return database.counterAddAndGet(name, delta) | 83 | return database.counterAddAndGet(name, delta) |
82 | .whenComplete((r, e) -> timer.stop(e)); | 84 | .whenComplete((r, e) -> timer.stop(e)); |
83 | } | 85 | } |
86 | + | ||
87 | + @Override | ||
88 | + public CompletableFuture<Void> set(long value) { | ||
89 | + final MeteringAgent.Context timer = monitor.startTimer(SET); | ||
90 | + return database.counterSet(name, value) | ||
91 | + .whenComplete((r, e) -> timer.stop(e)); | ||
92 | + } | ||
84 | } | 93 | } | ... | ... |
... | @@ -63,6 +63,11 @@ public class DefaultAtomicCounter implements AtomicCounter { | ... | @@ -63,6 +63,11 @@ public class DefaultAtomicCounter implements AtomicCounter { |
63 | } | 63 | } |
64 | 64 | ||
65 | @Override | 65 | @Override |
66 | + public void set(long value) { | ||
67 | + complete(asyncCounter.set(value)); | ||
68 | + } | ||
69 | + | ||
70 | + @Override | ||
66 | public long get() { | 71 | public long get() { |
67 | return complete(asyncCounter.get()); | 72 | return complete(asyncCounter.get()); |
68 | } | 73 | } | ... | ... |
... | @@ -44,7 +44,7 @@ public class DefaultDatabase extends AbstractResource<Database> implements Datab | ... | @@ -44,7 +44,7 @@ public class DefaultDatabase extends AbstractResource<Database> implements Datab |
44 | private final Set<Consumer<StateMachineUpdate>> consumers = Sets.newCopyOnWriteArraySet(); | 44 | private final Set<Consumer<StateMachineUpdate>> consumers = Sets.newCopyOnWriteArraySet(); |
45 | private final TriConsumer<String, Object, Object> watcher = new InternalStateMachineWatcher(); | 45 | private final TriConsumer<String, Object, Object> watcher = new InternalStateMachineWatcher(); |
46 | 46 | ||
47 | - @SuppressWarnings({ "unchecked", "rawtypes" }) | 47 | + @SuppressWarnings({"unchecked", "rawtypes"}) |
48 | public DefaultDatabase(ResourceManager context) { | 48 | public DefaultDatabase(ResourceManager context) { |
49 | super(context); | 49 | super(context); |
50 | this.stateMachine = new DefaultStateMachine(context, | 50 | this.stateMachine = new DefaultStateMachine(context, |
... | @@ -153,6 +153,11 @@ public class DefaultDatabase extends AbstractResource<Database> implements Datab | ... | @@ -153,6 +153,11 @@ public class DefaultDatabase extends AbstractResource<Database> implements Datab |
153 | } | 153 | } |
154 | 154 | ||
155 | @Override | 155 | @Override |
156 | + public CompletableFuture<Void> counterSet(String counterName, long value) { | ||
157 | + return checkOpen(() -> proxy.counterSet(counterName, value)); | ||
158 | + } | ||
159 | + | ||
160 | + @Override | ||
156 | public CompletableFuture<Long> queueSize(String queueName) { | 161 | public CompletableFuture<Long> queueSize(String queueName) { |
157 | return checkOpen(() -> proxy.queueSize(queueName)); | 162 | return checkOpen(() -> proxy.queueSize(queueName)); |
158 | } | 163 | } | ... | ... |
... | @@ -220,6 +220,11 @@ public class PartitionedDatabase implements Database { | ... | @@ -220,6 +220,11 @@ public class PartitionedDatabase implements Database { |
220 | return partitioner.getPartition(counterName, counterName).counterGetAndAdd(counterName, delta); | 220 | return partitioner.getPartition(counterName, counterName).counterGetAndAdd(counterName, delta); |
221 | } | 221 | } |
222 | 222 | ||
223 | + @Override | ||
224 | + public CompletableFuture<Void> counterSet(String counterName, long value) { | ||
225 | + checkState(isOpen.get(), DB_NOT_OPEN); | ||
226 | + return partitioner.getPartition(counterName, counterName).counterSet(counterName, value); | ||
227 | + } | ||
223 | 228 | ||
224 | @Override | 229 | @Override |
225 | public CompletableFuture<Long> queueSize(String queueName) { | 230 | public CompletableFuture<Long> queueSize(String queueName) { |
... | @@ -384,3 +389,4 @@ public class PartitionedDatabase implements Database { | ... | @@ -384,3 +389,4 @@ public class PartitionedDatabase implements Database { |
384 | partitions.forEach(p -> p.unregisterConsumer(consumer)); | 389 | partitions.forEach(p -> p.unregisterConsumer(consumer)); |
385 | } | 390 | } |
386 | } | 391 | } |
392 | + | ... | ... |
-
Please register or login to post a comment