Device Anti-Entropy
- create Advertisement
- handler for Advertisement
- register handler, background thread to send advertisement
Change-Id: I99e8a7d68747970c34b3c25c6d0489769d251446
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/common/impl/AntiEntropyAdvertisement.java b/core/store/dist/src/main/java/org/onlab/onos/store/common/impl/AntiEntropyAdvertisement.java
deleted file mode 100644
index 132f27a..0000000
--- a/core/store/dist/src/main/java/org/onlab/onos/store/common/impl/AntiEntropyAdvertisement.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package org.onlab.onos.store.common.impl;
-
-import java.util.Map;
-
-import org.onlab.onos.cluster.NodeId;
-import org.onlab.onos.store.Timestamp;
-
-import com.google.common.collect.ImmutableMap;
-
-/**
- * Anti-Entropy advertisement message.
- * <p>
- * Message to advertise the information this node holds.
- *
- * @param <ID> ID type
- */
-public class AntiEntropyAdvertisement<ID> {
-
- private final NodeId sender;
- private final ImmutableMap<ID, Timestamp> advertisement;
-
- /**
- * Creates anti-entropy advertisement message.
- *
- * @param sender sender of this message
- * @param advertisement timestamp information of the data sender holds
- */
- public AntiEntropyAdvertisement(NodeId sender, Map<ID, Timestamp> advertisement) {
- this.sender = sender;
- this.advertisement = ImmutableMap.copyOf(advertisement);
- }
-
- public NodeId sender() {
- return sender;
- }
-
- public ImmutableMap<ID, Timestamp> advertisement() {
- return advertisement;
- }
-
- // Default constructor for serializer
- protected AntiEntropyAdvertisement() {
- this.sender = null;
- this.advertisement = null;
- }
-}
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/common/impl/AntiEntropyReply.java b/core/store/dist/src/main/java/org/onlab/onos/store/common/impl/AntiEntropyReply.java
deleted file mode 100644
index 033a1de..0000000
--- a/core/store/dist/src/main/java/org/onlab/onos/store/common/impl/AntiEntropyReply.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package org.onlab.onos.store.common.impl;
-
-import java.util.Map;
-import java.util.Set;
-
-import org.onlab.onos.cluster.NodeId;
-import org.onlab.onos.store.device.impl.VersionedValue;
-
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-
-/**
- * Anti-Entropy reply message.
- * <p>
- * Message to send in reply to advertisement or another reply.
- * Suggest to the sender about the more up-to-date data this node has,
- * and request for more recent data that the receiver has.
- */
-public class AntiEntropyReply<ID, V extends VersionedValue<?>> {
-
- private final NodeId sender;
- private final ImmutableMap<ID, V> suggestion;
- private final ImmutableSet<ID> request;
-
- /**
- * Creates a reply to anti-entropy message.
- *
- * @param sender sender of this message
- * @param suggestion collection of more recent values, sender had
- * @param request Collection of identifiers
- */
- public AntiEntropyReply(NodeId sender,
- Map<ID, V> suggestion,
- Set<ID> request) {
- this.sender = sender;
- this.suggestion = ImmutableMap.copyOf(suggestion);
- this.request = ImmutableSet.copyOf(request);
- }
-
- public NodeId sender() {
- return sender;
- }
-
- /**
- * Returns collection of values, which the recipient of this reply is likely
- * to be missing or has outdated version.
- *
- * @return
- */
- public ImmutableMap<ID, V> suggestion() {
- return suggestion;
- }
-
- /**
- * Returns collection of identifier to request.
- *
- * @return collection of identifier to request
- */
- public ImmutableSet<ID> request() {
- return request;
- }
-
- /**
- * Checks if reply contains any suggestion or request.
- *
- * @return true if nothing is suggested and requested
- */
- public boolean isEmpty() {
- return suggestion.isEmpty() && request.isEmpty();
- }
-
- // Default constructor for serializer
- protected AntiEntropyReply() {
- this.sender = null;
- this.suggestion = null;
- this.request = null;
- }
-}
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/common/impl/ControllerNodeToNodeId.java b/core/store/dist/src/main/java/org/onlab/onos/store/common/impl/ControllerNodeToNodeId.java
new file mode 100644
index 0000000..73187ee
--- /dev/null
+++ b/core/store/dist/src/main/java/org/onlab/onos/store/common/impl/ControllerNodeToNodeId.java
@@ -0,0 +1,24 @@
+package org.onlab.onos.store.common.impl;
+
+import org.onlab.onos.cluster.ControllerNode;
+import org.onlab.onos.cluster.NodeId;
+
+import com.google.common.base.Function;
+
+/**
+ * Function to convert ControllerNode to NodeId.
+ */
+public final class ControllerNodeToNodeId
+ implements Function<ControllerNode, NodeId> {
+
+ private static final ControllerNodeToNodeId INSTANCE = new ControllerNodeToNodeId();
+
+ @Override
+ public NodeId apply(ControllerNode input) {
+ return input.id();
+ }
+
+ public static ControllerNodeToNodeId toNodeId() {
+ return INSTANCE;
+ }
+}
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/common/impl/Timestamped.java b/core/store/dist/src/main/java/org/onlab/onos/store/common/impl/Timestamped.java
index 77b0a87..e803e74 100644
--- a/core/store/dist/src/main/java/org/onlab/onos/store/common/impl/Timestamped.java
+++ b/core/store/dist/src/main/java/org/onlab/onos/store/common/impl/Timestamped.java
@@ -30,6 +30,7 @@
/**
* Returns the value.
+ *
* @return value
*/
public T value() {
@@ -38,6 +39,7 @@
/**
* Returns the time stamp.
+ *
* @return time stamp
*/
public Timestamp timestamp() {
@@ -51,7 +53,16 @@
* @return true if this instance is newer.
*/
public boolean isNewer(Timestamped<T> other) {
- return this.timestamp.compareTo(checkNotNull(other).timestamp()) > 0;
+ return isNewer(checkNotNull(other).timestamp());
+ }
+
+ /**
+ * Tests if this timestamp is newer thatn the specified timestamp.
+ * @param timestamp to compare agains
+ * @return true if this instance is newer
+ */
+ public boolean isNewer(Timestamp timestamp) {
+ return this.timestamp.compareTo(checkNotNull(timestamp)) > 0;
}
@Override