+++ /dev/null
-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.Network;\r
-import peersim.core.Node;\r
-import peersim.dynamics.NodeInitializer;\r
-\r
-/**\r
- *\r
- * @author Andrea Esposito <and1989@gmail.com>\r
- */\r
-public class SymphonyNodeInizializer implements NodeInitializer {\r
-\r
- private static final String PAR_NETMANAGER = "symphonynetworkmanager";\r
- private static final String PAR_SYMPHONY = "symphony";\r
- private static final String PAR_BOOTNODE = "bootstrapnode";\r
- private final int networkManagerID;\r
- private final int symphonyID;\r
- private final int indexBootstrapNode;\r
-\r
- public SymphonyNodeInizializer(String prefix) {\r
-\r
- networkManagerID = Configuration.getPid(prefix + "." + PAR_NETMANAGER);\r
- indexBootstrapNode = Configuration.getInt(prefix + "." + PAR_BOOTNODE, 0);\r
- symphonyID = Configuration.getPid(prefix + "." + PAR_SYMPHONY);\r
- }\r
-\r
- @Override\r
- public void initialize(Node node) {\r
- int indexRealBootstrapNode = indexBootstrapNode;\r
- Node realBootstrapNode = Network.get(indexBootstrapNode);\r
- SymphonyNetworkManager symphonyNetworkManager = (SymphonyNetworkManager) node.getProtocol(networkManagerID);\r
- SymphonyProtocol symphony = (SymphonyProtocol) realBootstrapNode.getProtocol(symphonyID);\r
-\r
- boolean joinSent;\r
- do {\r
- try {\r
- while (!symphony.isBootstrapped() || !realBootstrapNode.isUp()) {\r
- indexRealBootstrapNode = (indexRealBootstrapNode + 1) % Network.size();\r
- realBootstrapNode = Network.get(indexRealBootstrapNode);\r
- symphony = (SymphonyProtocol) realBootstrapNode.getProtocol(symphonyID);\r
-\r
- if (indexRealBootstrapNode == indexBootstrapNode) {\r
- Logger.getLogger(SymphonyNodeInizializer.class.getName()).log(Level.WARNING, "No node ONLINE. Impossible to do the network bootstrap.");\r
- return;\r
- }\r
- }\r
-\r
- symphonyNetworkManager.join(node, realBootstrapNode);\r
- joinSent = true;\r
- } catch (RoutingException ex) {\r
- Logger.getLogger(SymphonyNodeInizializer.class.getName()).log(Level.SEVERE, "Join Issue");\r
- joinSent = false;\r
- }\r
- } while (!joinSent);\r
- }\r
-}\r