import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; import java.util.logging.LogManager; import analysis.NetworkDumper; import node.Node; public class Main { public static Map nodes = new HashMap<>(); /** * grow a network: Starting with one peer, repeatedly let peers spawn or * leave at random * * @param args * @throws IOException */ public static void main(String[] args) throws IOException { System.setProperty( "java.util.logging.config.file", "logging.properties"); try { LogManager.getLogManager().readConfiguration(); } catch (Exception e) { e.printStackTrace();} nodes.put("a", new Node()); BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); String s; while ((s = in.readLine()) != null && s.length() != 0) { String[] splitted = s.split(" "); String node = splitted[0]; String cmd = splitted[1]; if (nodes.containsKey(node)) { switch (cmd) { case "br": nodes.get(node).gatherInformationOfNetwork(); try { Thread.sleep(2000); } catch (InterruptedException e) { } NetworkDumper dumper = new NetworkDumper(nodes.get(node)); dumper.write(dumper.networkToDot(nodes.get(node) .getNetwork())); break; case "spawn": if (splitted.length > 2) { Node newNode = nodes.get(node).spawn(); String newNodeName = splitted[2]; nodes.put(newNodeName, newNode); } else { System.out.println("Please enter a name for the new node.");} break; case "leave": Node theNode = nodes.get(node); theNode.leave(); nodes.remove(node); break; case "status": System.out.println(nodes.get(node)); break; default: System.out.println("Unknown command."); break; } } else { System.out.println("No such node.");} } } }