79 lines
2.5 KiB
Java
79 lines
2.5 KiB
Java
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<String, Node> 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.");}
|
|
}
|
|
}
|
|
} |