+++ /dev/null
-package example.symphony;\r
-\r
-import java.util.Comparator;\r
-import java.util.logging.Level;\r
-import java.util.logging.Logger;\r
-import peersim.core.Node;\r
-\r
-/**\r
- * Comparator that measure the relative distance from a target node\r
- *\r
- * @author Andrea Esposito <and1989@gmail.com>\r
- */\r
-public class SymphonyNodeComparator implements Comparator<Node> {\r
-\r
- private final int symphonyID;\r
- private double target;\r
-\r
- public SymphonyNodeComparator(int symphonyID) {\r
- this.symphonyID = symphonyID;\r
- }\r
-\r
- public SymphonyNodeComparator(int symphonyID, double target) {\r
- this(symphonyID);\r
- this.target = target;\r
- }\r
-\r
- public SymphonyNodeComparator(int symphonyID, Node targetNode) {\r
- this(symphonyID);\r
- SymphonyProtocol symphony = (SymphonyProtocol) targetNode.getProtocol(symphonyID);\r
- this.target = symphony.getIdentifier();\r
- }\r
-\r
- public int compare(Node o1, Node o2) {\r
-\r
- SymphonyProtocol symphony1 = (SymphonyProtocol) o1.getProtocol(symphonyID);\r
- SymphonyProtocol symphony2 = (SymphonyProtocol) o2.getProtocol(symphonyID);\r
-\r
- Double identifier1 = symphony1.getIdentifier();\r
- Double identifier2 = symphony2.getIdentifier();\r
-\r
- Double distance1 = Math.abs(target - identifier1) % 1;\r
- Double distance2 = Math.abs(target - identifier2) % 1;\r
-\r
- identifier1 = Math.min(1.0 - distance1, distance1);\r
- identifier2 = Math.min(1.0 - distance2, distance2);\r
-\r
- Logger.getLogger(SymphonyNodeComparator.class.getName()).log(Level.FINEST, "id1= " + symphony1.getIdentifier() + " target= " + target + " id2= " + symphony2.getIdentifier() + " res= " + identifier1.compareTo(identifier2));\r
-\r
- return identifier1.compareTo(identifier2);\r
- }\r
-}\r