+++ /dev/null
-package example.symphony;\r
-\r
-import peersim.config.Configuration;\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 SymphonyStatistics implements Control {\r
-\r
- private static final String PAR_SYMPHONY = "symphony";\r
- private final int symphonyID;\r
- private long totalMsg = 0;\r
- private long numRouteResposeMsg = 0;\r
- private long numRouteMsg = 0;\r
- private long numRouteFailMsg = 0;\r
- private long numRouteFoundManagerMsg = 0;\r
- private double mediaHopRouteResponseMsg = 0.0;\r
-\r
- public SymphonyStatistics(String prefix) {\r
- symphonyID = Configuration.getPid(prefix + "." + PAR_SYMPHONY);\r
- }\r
-\r
- public boolean execute() {\r
-\r
- AdapterIterableNetwork itNetwork = new AdapterIterableNetwork();\r
- for (Node node : itNetwork) {\r
- SymphonyProtocol symphony = (SymphonyProtocol) node.getProtocol(symphonyID);\r
- Tuple<Message, Message>[] tupleMessages = symphony.getHistoryMessage();\r
- totalMsg += tupleMessages.length;\r
-\r
- for (Tuple<Message, Message> tupleMessage : tupleMessages) {\r
-\r
- Message message = tupleMessage.x;\r
-\r
- if (message != null) {\r
- switch (message.getType()) {\r
- case ROUTE:\r
- numRouteMsg++;\r
- if (tupleMessage.y != null && tupleMessage.y.getType() == Message.MessageType.ROUTE_RESPONSE) {\r
- numRouteFoundManagerMsg++;\r
- mediaHopRouteResponseMsg = ((mediaHopRouteResponseMsg * (numRouteFoundManagerMsg - 1)) + message.getHop()) / (double) numRouteFoundManagerMsg;\r
- }\r
- break;\r
- case ROUTE_FAIL:\r
- numRouteFailMsg++;\r
- break;\r
- case ROUTE_RESPONSE:\r
- numRouteResposeMsg++;\r
- break;\r
- }\r
- }\r
- }\r
-\r
- symphony.clearHistoryMessage();\r
- }\r
-\r
- printStatistics();\r
-\r
- return false;\r
- }\r
-\r
- private void printStatistics() {\r
- System.out.println("### Statistics ###");\r
- System.out.println("- Total Messages: " + totalMsg);\r
- System.out.println("- Total Route Messages: " + numRouteMsg);\r
- System.out.println("- Found Manager Route Message: " + numRouteFoundManagerMsg);\r
- System.out.println("- Response Message: " + numRouteResposeMsg);\r
- System.out.println("- Fail Message: " + numRouteFailMsg);\r
- System.out.println();\r
- System.out.println("Average Hop:" + mediaHopRouteResponseMsg + " Expected value (k = log n): " + (Math.log(Network.size()) / Math.log(2)));\r
- System.out.println("### END ###\n");\r
- }\r
-}\r