Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
peersimgrid release 1.0
[simgrid.git] / contrib / psg / src / example / symphony / RandomRouteTest.java
diff --git a/contrib/psg/src/example/symphony/RandomRouteTest.java b/contrib/psg/src/example/symphony/RandomRouteTest.java
new file mode 100644 (file)
index 0000000..fe55f33
--- /dev/null
@@ -0,0 +1,48 @@
+package example.symphony;\r
+\r
+import java.util.logging.Level;\r
+import java.util.logging.Logger;\r
+import peersim.config.Configuration;\r
+import peersim.core.CommonState;\r
+import peersim.core.Control;\r
+import peersim.core.Network;\r
+import peersim.core.Node;\r
+\r
+/**\r
+ *\r
+ * @author Andrea Esposito <and1989@gmail.com>\r
+ */\r
+public class RandomRouteTest implements Control, Handler {\r
+\r
+    private static final String PAR_SYMPHONY = "symphony";\r
+    private final int symphonyID;\r
+\r
+    public RandomRouteTest(String prefix) {\r
+        symphonyID = Configuration.getPid(prefix + "." + PAR_SYMPHONY);\r
+    }\r
+\r
+    public boolean execute() {\r
+\r
+        Node src = Network.get(Math.abs(CommonState.r.nextInt()) % Network.size());\r
+\r
+        SymphonyProtocol symphony = (SymphonyProtocol) src.getProtocol(symphonyID);\r
+        try {\r
+            symphony.route(src, CommonState.r.nextDouble(), this);\r
+        } catch (RoutingException ex) {\r
+            Logger.getLogger(RandomRouteTest.class.getName()).log(Level.SEVERE, ex.getMessage());\r
+        }\r
+\r
+        return false;\r
+\r
+    }\r
+\r
+    public void handle(SymphonyProtocol symphony, Tuple<Node, Double> tuple) {\r
+\r
+        if (tuple == null) {\r
+            Logger.getLogger(RandomRouteTest.class.getName()).log(Level.SEVERE, "FAIL ROUTE RANDOMTEST");\r
+            return;\r
+        }\r
+\r
+        Logger.getLogger(RandomRouteTest.class.getName()).log(Level.FINE, symphony.getIdentifier() + " source find the manager of " + tuple.y + " and it is " + ((SymphonyProtocol) tuple.x.getProtocol(symphonyID)).getIdentifier());\r
+    }\r
+}\r