public void PrintTable(int step = -1) { lock (ThreadLock) { if (step != -1) { Console.WriteLine("Simulation step {0} of router {1}", step, ParentNode.GetIP()); } Console.WriteLine("[Source IP]\t[Destination IP]\t[Next Hop]\t[Metric]\n"); foreach (RoutingState state in States) { Console.WriteLine("{0}\t{1}\t\t{2}\t\t{3}", ParentNode.GetIP(), state.DestinationNode.GetIP(), state.NextNode.GetIP(), (state.Metric >= MAX_HOPS + 1) ? "inf" : state.Metric.ToString() ); } Console.WriteLine(""); //Formatting } }
public void PrintNodes() { foreach (NetworkNode n in NetworkNodes) { Console.WriteLine("Router: {0}", n.GetIP()); Console.WriteLine("Connections:"); foreach (Edge e in n.GetEdges()) { NetworkNode en = e.GetLeft() == n?e.GetRight() : e.GetLeft(); Console.WriteLine("{0} -- {1}", n.GetIP(), en.GetIP()); } Console.WriteLine(); } }
public void Generate(int Networks) { if (Networks <= 1) { throw new ArgumentException("Cannot create a network with less than two networks!"); } NetworkNodes.Clear(); //Generate network point nodes List <string> uniqueIPs = GenerateUniqueIPs(Networks); Console.WriteLine("Generated IP Addresses: "); foreach (string ip in uniqueIPs) { Console.WriteLine(ip); NetworkNodes.Add(new NetworkNode(ip, this)); } Console.WriteLine("Generated connections: "); //Generate a randomly connected network graph for (int i = 0; i < Networks; i++) { //Generate a random network to target int r = RandomGenerator.Next(Networks); while (r == i) { r = RandomGenerator.Next(Networks); } NetworkNode currentNetwork = NetworkNodes[i]; NetworkNode targetNetwork = NetworkNodes[r]; Edge e = new Edge(currentNetwork, targetNetwork); currentNetwork.AddEdge(e); targetNetwork.AddEdge(e); Console.WriteLine("{0} -- {1}", currentNetwork.GetIP(), targetNetwork.GetIP()); } }