private void InitializeHolders() { EdgeHolder = new EdgeHolder(); NodeHolder = new NodeHolder(); var graphGenerator = new TopologyGivenGraphGenerator(Topologies[IndexToRunForEachNodeCount], AlgorithmType); graphGenerator.GenerateGraph(NodeHolder, EdgeHolder); NodeHolder.Terminated += NodeHolder_Terminated; RunReport = new RunReport(AlgorithmType, GraphType, NodeHolder.NodeCount); }
private void Run() { OnStepDone(); StartTime = DateTime.Now; InitializeHolders(); RunReport.ReportTopology(EdgeHolder.GetCopyList()); RunReport.ReportNodes(NodeHolder.GetCopyList(), true); foreach (var node in NodeHolder.GetCopyList().AsParallel()) { Task.Run(() => { node.UserDefined_SingleInitiatorProcedure(); }); } NodeHolder.StartTerminationDetection(); }
private void HandleReport() { RunReport.ReportNodes(NodeHolder.GetCopyList(), false); RunReport.GatherMessageCounts(NodeHolder.GetCopyList()); RunReport.GatherMoveCount(NodeHolder.GetCopyList()); RunReport.ReportInvalidNodes(NodeHolder.GetCopyList()); RunReport.ReportDegrees(NodeHolder.GetCopyList()); RunReport.ReportCongestions(NodeHolder.GetCopyList()); RunReport.SetDuration(Duration.TotalSeconds); if (!Directory.Exists(FolderName)) { Directory.CreateDirectory(FolderName); } using (var streamWriter = new StreamWriter(FolderName + ".txt", true)) streamWriter.WriteLine(RunReport.ToString()); using (var streamWriter = new StreamWriter(GetFileNameForCurrentRun(), false)) streamWriter.WriteLine(RunReport.Serialize()); }