コード例 #1
0
        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);
        }
コード例 #2
0
        private void Run()
        {
            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();
        }
コード例 #3
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);

            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());
        }