コード例 #1
0
 private void InitializeHolders()
 {
     EdgeHolder             = new EdgeHolder();
     NodeHolder             = new NodeHolder();
     NodeHolder.Terminated += NodeHolder_Terminated;
     RunReport              = new RunReport(AlgorithmType, GraphType, NodeCount);
 }
コード例 #2
0
        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);

            using (var streamWriter = new StreamWriter("test.txt", true))
                streamWriter.WriteLine(RunReport.ToString());
        }
コード例 #3
0
        private void Run()
        {
            StartTime = DateTime.Now;
            InitializeHolders();

            var graphGenerator = GraphFactory.GetGraphGenerator(GraphType);

            graphGenerator.Generate(NodeCount, NodeHolder, EdgeHolder, AlgorithmType);

            RunReport.ReportTopology(EdgeHolder.GetCopyList());
            RunReport.ReportNodes(NodeHolder.GetCopyList(), true);

            foreach (var node in NodeHolder.GetCopyList().AsParallel())
            {
                Task.Run(() =>
                {
                    node.UserDefined_SingleInitiatorProcedure();
                });
            }

            NodeHolder.StartTerminationDetection();
        }