1 package example.symphony;
\r
3 import java.util.logging.Level;
\r
4 import java.util.logging.Logger;
\r
5 import peersim.config.Configuration;
\r
6 import peersim.core.Network;
\r
7 import peersim.core.Node;
\r
8 import peersim.dynamics.NodeInitializer;
\r
12 * @author Andrea Esposito <and1989@gmail.com>
\r
14 public class SymphonyNodeInizializer implements NodeInitializer {
\r
16 private static final String PAR_NETMANAGER = "symphonynetworkmanager";
\r
17 private static final String PAR_SYMPHONY = "symphony";
\r
18 private static final String PAR_BOOTNODE = "bootstrapnode";
\r
19 private final int networkManagerID;
\r
20 private final int symphonyID;
\r
21 private final int indexBootstrapNode;
\r
23 public SymphonyNodeInizializer(String prefix) {
\r
25 networkManagerID = Configuration.getPid(prefix + "." + PAR_NETMANAGER);
\r
26 indexBootstrapNode = Configuration.getInt(prefix + "." + PAR_BOOTNODE, 0);
\r
27 symphonyID = Configuration.getPid(prefix + "." + PAR_SYMPHONY);
\r
31 public void initialize(Node node) {
\r
32 int indexRealBootstrapNode = indexBootstrapNode;
\r
33 Node realBootstrapNode = Network.get(indexBootstrapNode);
\r
34 SymphonyNetworkManager symphonyNetworkManager = (SymphonyNetworkManager) node.getProtocol(networkManagerID);
\r
35 SymphonyProtocol symphony = (SymphonyProtocol) realBootstrapNode.getProtocol(symphonyID);
\r
40 while (!symphony.isBootstrapped() || !realBootstrapNode.isUp()) {
\r
41 indexRealBootstrapNode = (indexRealBootstrapNode + 1) % Network.size();
\r
42 realBootstrapNode = Network.get(indexRealBootstrapNode);
\r
43 symphony = (SymphonyProtocol) realBootstrapNode.getProtocol(symphonyID);
\r
45 if (indexRealBootstrapNode == indexBootstrapNode) {
\r
46 Logger.getLogger(SymphonyNodeInizializer.class.getName()).log(Level.WARNING, "No node ONLINE. Impossible to do the network bootstrap.");
\r
51 symphonyNetworkManager.join(node, realBootstrapNode);
\r
53 } catch (RoutingException ex) {
\r
54 Logger.getLogger(SymphonyNodeInizializer.class.getName()).log(Level.SEVERE, "Join Issue");
\r
57 } while (!joinSent);
\r