Changeset 2283


Ignore:
Timestamp:
Jan 4, 2011, 1:01:52 PM (11 years ago)
Author:
nolte
Message:

statistic update: every 30 minutes the statistics will be updated automatically
to the exact statistics.

Location:
trunk/CrypPlugins/KeySearcher
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/KeySearcher/KeySearcher.cs

    r2282 r2283  
    12291229            return statistic;
    12301230        }
     1231        public void ResetStatistics()
     1232        {
     1233            statistic = null;
     1234            statistic = new Dictionary<string, Dictionary<long, Information>>();
     1235        }
    12311236
    12321237        internal void IntegrateNewResults(LinkedList<ValueKey> updatedCostList, Dictionary<string, Dictionary<long, Information>> updatedStatistics, string dataIdentifier)
  • trunk/CrypPlugins/KeySearcher/P2P/DistributedBruteForceManager.cs

    r2275 r2283  
    7373
    7474            status.CurrentOperation = "Initializing distributed key pool tree";
    75             try
    76             {
    77                 keyPoolTree = new KeyPoolTree(patternPool, keySearcher, keyQualityHelper, keyGenerator, status, StatisticsGenerator);
    78             }
    79             catch (KeySearcherStopException)
    80             {
    81                 status.CurrentOperation = "PLEASE UPDATE";
    82                 keySearcher.GuiLogMessage("Keysearcher Fullstop.Please Update your Version.", NotificationLevel.Error);
    83                 keySearcher.Stop();
    84                 throw new KeySearcherStopException();
    85             }
     75            InitializeTree();
    8676           
    87 
    88             keySearcher.GuiLogMessage(
    89                 "Total amount of patterns: " + patternPool.Length + ", each containing " + patternPool.PartSize +
    90                 " keys.", NotificationLevel.Info);
    91             status.CurrentOperation = "Ready for calculation";
    92 
    93             status.StartDate = keyPoolTree.StartDate();
    94             status.JobSubmitterID = keyPoolTree.SubmitterID();
    95             status.LocalFinishedChunks = FindLocalPatterns();
    96 
    97             keyPoolTree.UpdateStatusForNewCalculation();
    98             keySearcher.SetInitialized(true);
    99 
     77            bool statupdate = false;
    10078            Leaf currentLeaf;
     79            var statisticTimer = new Timer { Interval = 30 * 60 * 1000 };    //Update of the statistics after every 30 minutes
     80            statisticTimer.Start();
     81
    10182            while (!keySearcher.stop)
    10283            {
     84                if(statupdate)
     85                {
     86                    statisticTimer.Stop();
     87                    statisticTimer.Dispose();
     88                    keyPoolTree.Reset();
     89                    keySearcher.ResetStatistics();
     90                    keySearcher.SetInitialized(false);
     91                    status.CurrentOperation = "Updating statistic";
     92                    InitializeTree();
     93                    statupdate = false;
     94                    statisticTimer = new Timer { Interval = 30 * 60 * 1000 };
     95                    statisticTimer.Start();
     96                }
     97
    10398                status.IsCurrentProgressIndeterminate = true;
    10499
     
    171166                                                                        });
    172167
     168                statisticTimer.Elapsed += new ElapsedEventHandler(delegate
     169                                                                      {
     170                                                                          statupdate = true;
     171                                                                      });
     172
    173173                keySearcher.GuiLogMessage(
    174174                    "Running pattern #" + displayablePatternId + " of " + patternPool.Length,
     
    278278            status.IsCurrentProgressIndeterminate = false;
    279279            status.CurrentOperation = "Idle";
     280            statisticTimer.Stop();
     281            statisticTimer.Dispose();
    280282            status.RemainingTimeTotal = new TimeSpan(0);
    281283        }
     
    298300        }
    299301
     302        private void InitializeTree()
     303        {
     304            try
     305            {
     306                keyPoolTree = new KeyPoolTree(patternPool, keySearcher, keyQualityHelper, keyGenerator, status, StatisticsGenerator);
     307            }
     308            catch (KeySearcherStopException)
     309            {
     310                status.CurrentOperation = "PLEASE UPDATE";
     311                keySearcher.GuiLogMessage("Keysearcher Fullstop.Please Update your Version.", NotificationLevel.Error);
     312                keySearcher.Stop();
     313                throw new KeySearcherStopException();
     314            }
     315
     316
     317            keySearcher.GuiLogMessage(
     318                "Total amount of patterns: " + patternPool.Length + ", each containing " + patternPool.PartSize +
     319                " keys.", NotificationLevel.Info);
     320            status.CurrentOperation = "Ready for calculation";
     321
     322            status.StartDate = keyPoolTree.StartDate();
     323            status.JobSubmitterID = keyPoolTree.SubmitterID();
     324            status.LocalFinishedChunks = FindLocalPatterns();
     325
     326            keyPoolTree.UpdateStatusForNewCalculation();
     327            keySearcher.SetInitialized(true);
     328        }
     329
    300330        void P2PBase_OnSystemJoined()
    301331        {
Note: See TracChangeset for help on using the changeset viewer.