Exemple #1
0
    public static void ParseCommandLine(string []args, out bool complete, Simulator sim)
    {
      complete = false;
      string dataset_filename = String.Empty;
      int carg = 0;

      sim.StartingNetworkSize = 10;
      while(carg < args.Length) {
        String[] parts = args[carg++].Split('=');
        try {
          switch(parts[0]) {
            case "--n":
              sim.StartingNetworkSize = Int32.Parse(parts[1]);
              break;
            case "--broken":
              sim.Broken = Double.Parse(parts[1]);
              break;
            case "--complete":
              complete = true;
              break;
            case "--seed":
              sim.Seed = Int32.Parse(parts[1]);
              break;
            case "--se":
              sim.SecureEdges = true;
              sim.SecureStartup();
              break;
            case "--ss":
              sim.SecureSenders = true;
              sim.SecureStartup();
              break;
            case "--dataset":
              dataset_filename = parts[1];
              break;
            case "--help":
            default:
              PrintHelp();
              break;
          }
        }
        catch {
          PrintHelp();
        }
      }

      Console.WriteLine("Initializing...");

      if(dataset_filename != String.Empty) {
        List<List<int>> latency = new List<List<int>>();
        using(StreamReader fs = new StreamReader(new FileStream(dataset_filename, FileMode.Open))) {
          string line = null;
          while((line = fs.ReadLine()) != null) {
            string[] points = line.Split(' ');
            List<int> current = new List<int>(points.Length);
            foreach(string point in points) {
              int val;
              if(!Int32.TryParse(point, out val)) {
                continue;
              }
              current.Add(Int32.Parse(point));
            }
            latency.Add(current);
          }
        }
        if(sim.StartingNetworkSize == 10) {
          sim.StartingNetworkSize = latency.Count;
        }
        SimulationEdgeListener.LatencyMap = latency;
      }

      for(int i = 0; i < sim.StartingNetworkSize; i++) {
        Console.WriteLine("Setting up node: " + i);
        sim.AddNode();
      }

      Console.WriteLine("Initialization complete...\n");
    }