Modified GossipIntentStore to use EventuallyConsistentMaps.
All IntentStore operations are now implemented. ONOS-858 Change-Id: I5081805b61c7e25e28707b90093cae12b5a4374b
Showing
4 changed files
with
22 additions
and
21 deletions
| ... | @@ -151,7 +151,7 @@ public interface EventuallyConsistentMap<K, V> { | ... | @@ -151,7 +151,7 @@ public interface EventuallyConsistentMap<K, V> { |
| 151 | * | 151 | * |
| 152 | * @param listener listener to register for events | 152 | * @param listener listener to register for events |
| 153 | */ | 153 | */ |
| 154 | - public void addListener(EventuallyConsistentMapListener listener); | 154 | + public void addListener(EventuallyConsistentMapListener<K, V> listener); |
| 155 | 155 | ||
| 156 | /** | 156 | /** |
| 157 | * Removes the specified listener from the map such that it will no longer | 157 | * Removes the specified listener from the map such that it will no longer |
| ... | @@ -159,7 +159,7 @@ public interface EventuallyConsistentMap<K, V> { | ... | @@ -159,7 +159,7 @@ public interface EventuallyConsistentMap<K, V> { |
| 159 | * | 159 | * |
| 160 | * @param listener listener to deregister for events | 160 | * @param listener listener to deregister for events |
| 161 | */ | 161 | */ |
| 162 | - public void removeListener(EventuallyConsistentMapListener listener); | 162 | + public void removeListener(EventuallyConsistentMapListener<K, V> listener); |
| 163 | 163 | ||
| 164 | /** | 164 | /** |
| 165 | * Shuts down the map and breaks communication between different instances. | 165 | * Shuts down the map and breaks communication between different instances. | ... | ... |
| ... | @@ -78,7 +78,7 @@ public class EventuallyConsistentMapImpl<K, V> | ... | @@ -78,7 +78,7 @@ public class EventuallyConsistentMapImpl<K, V> |
| 78 | private final ScheduledExecutorService backgroundExecutor; | 78 | private final ScheduledExecutorService backgroundExecutor; |
| 79 | 79 | ||
| 80 | private volatile boolean destroyed = false; | 80 | private volatile boolean destroyed = false; |
| 81 | - private static final String ERROR_DESTROYED = " is already destroyed"; | 81 | + private static final String ERROR_DESTROYED = " map is already destroyed"; |
| 82 | 82 | ||
| 83 | // TODO: Make these anti-entropy params configurable | 83 | // TODO: Make these anti-entropy params configurable |
| 84 | private long initialDelaySec = 5; | 84 | private long initialDelaySec = 5; |
| ... | @@ -154,6 +154,7 @@ public class EventuallyConsistentMapImpl<K, V> | ... | @@ -154,6 +154,7 @@ public class EventuallyConsistentMapImpl<K, V> |
| 154 | serializerPool = builder | 154 | serializerPool = builder |
| 155 | .register(WallClockTimestamp.class) | 155 | .register(WallClockTimestamp.class) |
| 156 | .register(PutEntry.class) | 156 | .register(PutEntry.class) |
| 157 | + .register(RemoveEntry.class) | ||
| 157 | .register(ArrayList.class) | 158 | .register(ArrayList.class) |
| 158 | .register(InternalPutEvent.class) | 159 | .register(InternalPutEvent.class) |
| 159 | .register(InternalRemoveEvent.class) | 160 | .register(InternalRemoveEvent.class) |
| ... | @@ -166,25 +167,25 @@ public class EventuallyConsistentMapImpl<K, V> | ... | @@ -166,25 +167,25 @@ public class EventuallyConsistentMapImpl<K, V> |
| 166 | 167 | ||
| 167 | @Override | 168 | @Override |
| 168 | public int size() { | 169 | public int size() { |
| 169 | - checkState(destroyed, mapName + ERROR_DESTROYED); | 170 | + checkState(!destroyed, mapName + ERROR_DESTROYED); |
| 170 | return items.size(); | 171 | return items.size(); |
| 171 | } | 172 | } |
| 172 | 173 | ||
| 173 | @Override | 174 | @Override |
| 174 | public boolean isEmpty() { | 175 | public boolean isEmpty() { |
| 175 | - checkState(destroyed, mapName + ERROR_DESTROYED); | 176 | + checkState(!destroyed, mapName + ERROR_DESTROYED); |
| 176 | return items.isEmpty(); | 177 | return items.isEmpty(); |
| 177 | } | 178 | } |
| 178 | 179 | ||
| 179 | @Override | 180 | @Override |
| 180 | public boolean containsKey(K key) { | 181 | public boolean containsKey(K key) { |
| 181 | - checkState(destroyed, mapName + ERROR_DESTROYED); | 182 | + checkState(!destroyed, mapName + ERROR_DESTROYED); |
| 182 | return items.containsKey(key); | 183 | return items.containsKey(key); |
| 183 | } | 184 | } |
| 184 | 185 | ||
| 185 | @Override | 186 | @Override |
| 186 | public boolean containsValue(V value) { | 187 | public boolean containsValue(V value) { |
| 187 | - checkState(destroyed, mapName + ERROR_DESTROYED); | 188 | + checkState(!destroyed, mapName + ERROR_DESTROYED); |
| 188 | 189 | ||
| 189 | return items.values().stream() | 190 | return items.values().stream() |
| 190 | .anyMatch(timestamped -> timestamped.value().equals(value)); | 191 | .anyMatch(timestamped -> timestamped.value().equals(value)); |
| ... | @@ -192,7 +193,7 @@ public class EventuallyConsistentMapImpl<K, V> | ... | @@ -192,7 +193,7 @@ public class EventuallyConsistentMapImpl<K, V> |
| 192 | 193 | ||
| 193 | @Override | 194 | @Override |
| 194 | public V get(K key) { | 195 | public V get(K key) { |
| 195 | - checkState(destroyed, mapName + ERROR_DESTROYED); | 196 | + checkState(!destroyed, mapName + ERROR_DESTROYED); |
| 196 | 197 | ||
| 197 | Timestamped<V> value = items.get(key); | 198 | Timestamped<V> value = items.get(key); |
| 198 | if (value != null) { | 199 | if (value != null) { |
| ... | @@ -203,7 +204,7 @@ public class EventuallyConsistentMapImpl<K, V> | ... | @@ -203,7 +204,7 @@ public class EventuallyConsistentMapImpl<K, V> |
| 203 | 204 | ||
| 204 | @Override | 205 | @Override |
| 205 | public void put(K key, V value) { | 206 | public void put(K key, V value) { |
| 206 | - checkState(destroyed, mapName + ERROR_DESTROYED); | 207 | + checkState(!destroyed, mapName + ERROR_DESTROYED); |
| 207 | 208 | ||
| 208 | Timestamp timestamp = clockService.getTimestamp(key); | 209 | Timestamp timestamp = clockService.getTimestamp(key); |
| 209 | if (putInternal(key, value, timestamp)) { | 210 | if (putInternal(key, value, timestamp)) { |
| ... | @@ -235,7 +236,7 @@ public class EventuallyConsistentMapImpl<K, V> | ... | @@ -235,7 +236,7 @@ public class EventuallyConsistentMapImpl<K, V> |
| 235 | 236 | ||
| 236 | @Override | 237 | @Override |
| 237 | public void remove(K key) { | 238 | public void remove(K key) { |
| 238 | - checkState(destroyed, mapName + ERROR_DESTROYED); | 239 | + checkState(!destroyed, mapName + ERROR_DESTROYED); |
| 239 | 240 | ||
| 240 | Timestamp timestamp = clockService.getTimestamp(key); | 241 | Timestamp timestamp = clockService.getTimestamp(key); |
| 241 | if (removeInternal(key, timestamp)) { | 242 | if (removeInternal(key, timestamp)) { |
| ... | @@ -261,7 +262,7 @@ public class EventuallyConsistentMapImpl<K, V> | ... | @@ -261,7 +262,7 @@ public class EventuallyConsistentMapImpl<K, V> |
| 261 | 262 | ||
| 262 | @Override | 263 | @Override |
| 263 | public void putAll(Map<? extends K, ? extends V> m) { | 264 | public void putAll(Map<? extends K, ? extends V> m) { |
| 264 | - checkState(destroyed, mapName + ERROR_DESTROYED); | 265 | + checkState(!destroyed, mapName + ERROR_DESTROYED); |
| 265 | 266 | ||
| 266 | List<PutEntry<K, V>> updates = new ArrayList<>(m.size()); | 267 | List<PutEntry<K, V>> updates = new ArrayList<>(m.size()); |
| 267 | 268 | ||
| ... | @@ -287,7 +288,7 @@ public class EventuallyConsistentMapImpl<K, V> | ... | @@ -287,7 +288,7 @@ public class EventuallyConsistentMapImpl<K, V> |
| 287 | 288 | ||
| 288 | @Override | 289 | @Override |
| 289 | public void clear() { | 290 | public void clear() { |
| 290 | - checkState(destroyed, mapName + ERROR_DESTROYED); | 291 | + checkState(!destroyed, mapName + ERROR_DESTROYED); |
| 291 | 292 | ||
| 292 | List<RemoveEntry<K>> removed = new ArrayList<>(items.size()); | 293 | List<RemoveEntry<K>> removed = new ArrayList<>(items.size()); |
| 293 | 294 | ||
| ... | @@ -311,14 +312,14 @@ public class EventuallyConsistentMapImpl<K, V> | ... | @@ -311,14 +312,14 @@ public class EventuallyConsistentMapImpl<K, V> |
| 311 | 312 | ||
| 312 | @Override | 313 | @Override |
| 313 | public Set<K> keySet() { | 314 | public Set<K> keySet() { |
| 314 | - checkState(destroyed, mapName + ERROR_DESTROYED); | 315 | + checkState(!destroyed, mapName + ERROR_DESTROYED); |
| 315 | 316 | ||
| 316 | return items.keySet(); | 317 | return items.keySet(); |
| 317 | } | 318 | } |
| 318 | 319 | ||
| 319 | @Override | 320 | @Override |
| 320 | public Collection<V> values() { | 321 | public Collection<V> values() { |
| 321 | - checkState(destroyed, mapName + ERROR_DESTROYED); | 322 | + checkState(!destroyed, mapName + ERROR_DESTROYED); |
| 322 | 323 | ||
| 323 | return items.values().stream() | 324 | return items.values().stream() |
| 324 | .map(Timestamped::value) | 325 | .map(Timestamped::value) |
| ... | @@ -327,7 +328,7 @@ public class EventuallyConsistentMapImpl<K, V> | ... | @@ -327,7 +328,7 @@ public class EventuallyConsistentMapImpl<K, V> |
| 327 | 328 | ||
| 328 | @Override | 329 | @Override |
| 329 | public Set<Map.Entry<K, V>> entrySet() { | 330 | public Set<Map.Entry<K, V>> entrySet() { |
| 330 | - checkState(destroyed, mapName + ERROR_DESTROYED); | 331 | + checkState(!destroyed, mapName + ERROR_DESTROYED); |
| 331 | 332 | ||
| 332 | return items.entrySet().stream() | 333 | return items.entrySet().stream() |
| 333 | .map(e -> new Entry(e.getKey(), e.getValue().value())) | 334 | .map(e -> new Entry(e.getKey(), e.getValue().value())) |
| ... | @@ -335,15 +336,15 @@ public class EventuallyConsistentMapImpl<K, V> | ... | @@ -335,15 +336,15 @@ public class EventuallyConsistentMapImpl<K, V> |
| 335 | } | 336 | } |
| 336 | 337 | ||
| 337 | @Override | 338 | @Override |
| 338 | - public void addListener(EventuallyConsistentMapListener listener) { | 339 | + public void addListener(EventuallyConsistentMapListener<K, V> listener) { |
| 339 | - checkState(destroyed, mapName + ERROR_DESTROYED); | 340 | + checkState(!destroyed, mapName + ERROR_DESTROYED); |
| 340 | 341 | ||
| 341 | listeners.add(checkNotNull(listener)); | 342 | listeners.add(checkNotNull(listener)); |
| 342 | } | 343 | } |
| 343 | 344 | ||
| 344 | @Override | 345 | @Override |
| 345 | - public void removeListener(EventuallyConsistentMapListener listener) { | 346 | + public void removeListener(EventuallyConsistentMapListener<K, V> listener) { |
| 346 | - checkState(destroyed, mapName + ERROR_DESTROYED); | 347 | + checkState(!destroyed, mapName + ERROR_DESTROYED); |
| 347 | 348 | ||
| 348 | listeners.remove(checkNotNull(listener)); | 349 | listeners.remove(checkNotNull(listener)); |
| 349 | } | 350 | } | ... | ... |
| ... | @@ -19,12 +19,12 @@ package org.onosproject.store.impl; | ... | @@ -19,12 +19,12 @@ package org.onosproject.store.impl; |
| 19 | * Listener interested in receiving modification events for an | 19 | * Listener interested in receiving modification events for an |
| 20 | * EventuallyConsistentMap. | 20 | * EventuallyConsistentMap. |
| 21 | */ | 21 | */ |
| 22 | -public interface EventuallyConsistentMapListener { | 22 | +public interface EventuallyConsistentMapListener<K, V> { |
| 23 | 23 | ||
| 24 | /** | 24 | /** |
| 25 | * Reacts to the specified event. | 25 | * Reacts to the specified event. |
| 26 | * | 26 | * |
| 27 | * @param event the event | 27 | * @param event the event |
| 28 | */ | 28 | */ |
| 29 | - public void event(EventuallyConsistentMapEvent event); | 29 | + public void event(EventuallyConsistentMapEvent<K, V> event); |
| 30 | } | 30 | } | ... | ... |
This diff is collapsed. Click to expand it.
-
Please register or login to post a comment