Ignore:
Timestamp:
Jan 30, 2011, 5:29:42 PM (11 years ago)
Author:
nolte
Message:

Added more Information to the Information-Tag of the
StatisticPresentation.

Location:
trunk/CrypPlugins/KeySearcher
Files:
4 edited

Legend:

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

    r2524 r2527  
    293293            p2PQuickWatchPresentation = ((QuickWatch)QuickWatchPresentation).P2PQuickWatchPresentation;
    294294            p2PQuickWatchPresentation.UpdateSettings(this, settings);
    295             ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.UpdateInformation(this,settings);
    296295
    297296            settings.PropertyChanged += SettingsPropertyChanged;
     
    312311            ((QuickWatch)QuickWatchPresentation).IsOpenCLEnabled = (settings.DeviceSettings.Count(x => x.useDevice) > 0);
    313312            p2PQuickWatchPresentation.UpdateSettings(this, settings);
    314             ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.UpdateInformation(this, settings);
    315313        }
    316314
     
    13141312        }
    13151313
     1314        private DateTime startDate;
     1315        public void SetBeginningDate(DateTime sd)
     1316        {
     1317            startDate = sd;
     1318        }
     1319
    13161320        public void ResetStatistics()
    13171321        {
     
    13201324            maschinehierarchie = null;
    13211325            maschinehierarchie = new Dictionary<long, Maschinfo>();
     1326        }
     1327
     1328        public void InitialiseInformationQuickwatch()
     1329        {
     1330            if (Pattern == null || !Pattern.testWildcardKey(settings.Key) || settings.ChunkSize == 0)
     1331            {
     1332                return;
     1333            }
     1334
     1335            var keyPattern = Pattern;
     1336            var keysPerChunk = Math.Pow(2, settings.ChunkSize);
     1337            var keyPatternPool = new KeyPatternPool(keyPattern, new BigInteger(keysPerChunk));
     1338
     1339            ((QuickWatch) QuickWatchPresentation).StatisticsPresentation.TotalBlocks = keyPatternPool.Length;
     1340            ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.TotalKeys = new BigInteger(keysPerChunk) * keyPatternPool.Length;   
     1341            ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.Days = DateTime.UtcNow.Subtract(startDate).Days + " Days";
     1342            UpdateStatisticsPresentation();
    13221343        }
    13231344
     
    13711392            }
    13721393            GenerateMaschineStats();
    1373 
    13741394            //The following Method can be used to write a local csv file with the User/Maschine Statistics.
    13751395            //WriteStatistics(dataIdentifier);
     1396            UpdateStatisticsPresentation();
    13761397           
     1398            updateToplist();
     1399        }
     1400
     1401        //Update the Statistic Presentation
     1402        internal void UpdateStatisticsPresentation()
     1403        {
     1404            var calcChunks = calculatedChunks();
    13771405            ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.Statistics = statistic;
    13781406            ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.MachineHierarchy = maschinehierarchie;
    1379 
    1380             updateToplist();
     1407            ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.Days = DateTime.UtcNow.Subtract(startDate).Days + " Days";
     1408            ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.CalculatedBlocks = calcChunks;
     1409            ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.CalculatedKeys = calcChunks * (BigInteger)Math.Pow(2, settings.ChunkSize);
     1410            ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.Percent = (double)calcChunks;
     1411            ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.Users = statistic.Keys.Count;
     1412            ((QuickWatch)QuickWatchPresentation).StatisticsPresentation.Machines = maschinehierarchie.Keys.Count;
    13811413        }
    13821414
     
    14631495
    14641496            maschinehierarchie = maschinehierarchie.OrderByDescending((x) => x.Value.Sum).ToDictionary(x => x.Key, y => y.Value);
     1497        }
     1498
     1499        internal BigInteger calculatedChunks()
     1500        {
     1501            return maschinehierarchie.Keys.Aggregate<long, BigInteger>(0, (current, mid) => current + maschinehierarchie[mid].Sum);
    14651502        }
    14661503
  • trunk/CrypPlugins/KeySearcher/P2P/DistributedBruteForceManager.cs

    r2495 r2527  
    7878            bool statupdate = false;
    7979            Leaf currentLeaf;
     80            keySearcher.InitialiseInformationQuickwatch();
    8081            var statisticTimer = new Timer { Interval = 30 * 60 * 1000 };    //Update of the statistics after every 30 minutes
    8182            statisticTimer.Start();
     
    346347
    347348            status.StartDate = keyPoolTree.StartDate();
     349            keySearcher.SetBeginningDate(keyPoolTree.StartDate());
    348350            status.JobSubmitterID = keyPoolTree.SubmitterID();
    349351            status.LocalFinishedChunks = FindLocalPatterns();
  • trunk/CrypPlugins/KeySearcher/Presentation/Controls/StatisticsPresentation.xaml

    r2506 r2527  
    3838                    <StackPanel>
    3939                        <Border BorderBrush="Silver" BorderThickness="2,2,2,2">
    40                             <Grid Height="175" Background="#AFE2E2FF">
     40                            <Grid Height="180" Background="#AFE2E2FF">
    4141                                <Grid.RowDefinitions>
    42                                     <RowDefinition Height="35" />
    43                                     <RowDefinition Height="35" />
    44                                     <RowDefinition Height="35" />
    45                                     <RowDefinition Height="35" />
    46                                     <RowDefinition Height="35" />
     42                                    <RowDefinition Height="30" />
     43                                    <RowDefinition Height="30" />
     44                                    <RowDefinition Height="30" />
     45                                    <RowDefinition Height="30" />
     46                                    <RowDefinition Height="30" />
     47                                    <RowDefinition Height="30" />
    4748                                </Grid.RowDefinitions>
    4849                                <Grid.ColumnDefinitions>
     
    5051                                    <ColumnDefinition Width="*" />
    5152                                </Grid.ColumnDefinitions>
    52                                 <Border BorderThickness="1" BorderBrush="Black" LayoutTransform="{StaticResource HeaderRotate}" Grid.Column="0" Grid.RowSpan="5" Background="#FF5C5CFF">
     53                                <Border BorderThickness="1" BorderBrush="Black" LayoutTransform="{StaticResource HeaderRotate}" Grid.Column="0" Grid.RowSpan="6" Background="#FF5C5CFF">
    5354                                    <Label Content="{Loc Aggregate_Statistics_}" FontSize="11" HorizontalAlignment="Center" Foreground="White" />
    5455                                </Border>
     
    6162                                <Label Content="{Loc Total__Keys__Tested_}" VerticalAlignment="Center" Grid.Row="3" Grid.Column="1" />
    6263                                <Label Content="-" Name="TotalKeysTested" VerticalAlignment="Center" Grid.Row="3" Grid.Column="1" HorizontalContentAlignment="Right" Padding="5,5,20,5" />
    63                                 <Label Content="{Loc Under__Construction_}" VerticalAlignment="Center" Grid.Row="4" Grid.Column="1" />
     64                                <Label Content="{Loc Working__Days_}" VerticalAlignment="Center" Grid.Row="4" Grid.Column="1" />
     65                                <Label Content="- Days" Name="WorkingDays" VerticalAlignment="Center" Grid.Row="4" Grid.Column="1" HorizontalContentAlignment="Right" Padding="5,5,20,5" />
     66                                <Label Content="{Loc Percent__Complete_}" VerticalAlignment="Center" Grid.Row="5" Grid.Column="1" />
     67                                <Label Content="- %" Name="PercentsComplete" VerticalAlignment="Center" Grid.Row="5" Grid.Column="1" HorizontalContentAlignment="Right" Padding="5,5,20,5" />
     68
    6469                            </Grid>
    6570                        </Border>
     
    6873                            <Grid Height="160" Background="#AFAAE1E8">
    6974                                <Grid.RowDefinitions>
    70                                     <RowDefinition Height="35" />
     75                                    <RowDefinition Height="30" />
     76                                    <RowDefinition Height="30" />
    7177                                    <RowDefinition Height="*" />
    7278                                </Grid.RowDefinitions>
     
    7682                                </Grid.ColumnDefinitions>
    7783                                <Border BorderThickness="1" BorderBrush="Black" LayoutTransform="{StaticResource HeaderRotate}" Grid.Column="0" Grid.RowSpan="4" Background="#FF099BA7">
    78                                     <Label Content="{Loc Current__Information_}" FontSize="11" HorizontalAlignment="Center" Foreground="White" />
     84                                    <Label Content="{Loc AdditionalInformation_}" FontSize="11" HorizontalAlignment="Center" Foreground="White" />
    7985                                </Border>
    80                                 <Label Content="{Loc Under__Construction_}" VerticalAlignment="Center" Grid.Row="0" Grid.Column="1" />
     86                                <Label Content=" X users are working on this job" Name="UserCount" VerticalAlignment="Center" Grid.Row="0" Grid.Column="1" HorizontalContentAlignment="Left" Padding="5,5,20,5" />
     87                                <Label Content=" X machines are working on this job" Name="MachineCount" VerticalAlignment="Center" Grid.Row="1" Grid.Column="1" HorizontalContentAlignment="Left" Padding="5,5,20,5" />
    8188                            </Grid>
    8289                        </Border>
     
    134141                                    <ProgressBar x:Name="Bar" Foreground="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TreeViewItem}},Path=(ItemsControl.AlternationIndex),Converter={StaticResource ResourceKey=TeamsBackgroundConverter}}" Value="{Binding Path=Value, Mode=OneTime, Converter={StaticResource ResourceKey=InformationToProgressConverter}}" Width="{Binding ElementName=statisticsTree, Path=ActualWidth, Converter={StaticResource ResourceKey=WidthConverter}}" Maximum="1" />
    135142                                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
    136                                         <TextBlock Text="{Loc Total_}"/>
    137143                                        <TextBlock Text="{Binding Path=Key, Converter={StaticResource ResourceKey=ChunkSumConverter}, StringFormat=\{0\,-5\}}"/>
    138144                                    </StackPanel>
  • trunk/CrypPlugins/KeySearcher/Presentation/Controls/StatisticsPresentation.xaml.cs

    r2506 r2527  
    8080        }
    8181
     82        #region Information
     83
     84        private string days = "??? Days";
     85        public string Days
     86        {
     87            get { return days; }
     88            set
     89            {
     90                lock (this)
     91                {
     92                    days = value;
     93                }
     94
     95                Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
     96                {
     97                    WorkingDays.Content = days;
     98                }, null);
     99            }
     100        }
     101
     102        private BigInteger totalBlocks = 0;
     103        public BigInteger TotalBlocks
     104        {
     105            get { return totalBlocks; }
     106            set
     107            {
     108                lock (this)
     109                {
     110                    totalBlocks = value;
     111                }
     112
     113                Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
     114                {
     115                    TotalAmountOfBlocks.Content = totalBlocks;
     116                }, null);
     117            }
     118        }
     119
     120        private BigInteger calculatedBlocks = 0;
     121        public BigInteger CalculatedBlocks
     122        {
     123            get { return calculatedBlocks; }
     124            set
     125            {
     126                lock (this)
     127                {
     128                    calculatedBlocks = value;
     129                }
     130
     131                Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
     132                {
     133                    TotalBlocksTested.Content = calculatedBlocks;
     134                }, null);
     135            }
     136        }
     137
     138        private BigInteger totalKeys = 0;
     139        public BigInteger TotalKeys
     140        {
     141            get { return totalKeys; }
     142            set
     143            {
     144                lock (this)
     145                {
     146                    totalKeys = value;
     147                }
     148
     149                Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
     150                {
     151                    TotalAmountOfKeys.Content = totalKeys;
     152                }, null);
     153            }
     154        }
     155
     156        private BigInteger calculatedKeys = 0;
     157        public BigInteger CalculatedKeys
     158        {
     159            get { return calculatedKeys; }
     160            set
     161            {
     162                lock (this)
     163                {
     164                    calculatedKeys = value;
     165                }
     166
     167                Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
     168                {
     169                    TotalKeysTested.Content = calculatedKeys;
     170                }, null);
     171            }
     172        }
     173
     174        private double percent;
     175        public double Percent
     176        {
     177            get { return percent; }
     178            set
     179            {
     180                lock (this)
     181                {
     182                    if (totalBlocks != 0)
     183                    {
     184                        percent = Math.Round((value/(double) totalBlocks)*10000)/100;
     185                    }
     186                    else
     187                    {
     188                        percent = 0;
     189                    }
     190                }
     191
     192                Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
     193                {
     194                    PercentsComplete.Content = percent + " %";
     195                }, null);
     196            }
     197        }
     198
     199        private BigInteger users = 0;
     200        public BigInteger Users
     201        {
     202            get { return users; }
     203            set
     204            {
     205                lock (this)
     206                {
     207                    users = value;
     208                }
     209
     210                Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
     211                {
     212                    UserCount.Content = users + " users are working on this job";
     213                }, null);
     214            }
     215        }
     216
     217        private BigInteger machines = 0;
     218        public BigInteger Machines
     219        {
     220            get { return machines; }
     221            set
     222            {
     223                lock (this)
     224                {
     225                    machines = value;
     226                }
     227
     228                Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
     229                {
     230                    MachineCount.Content = machines + " machines are working on this job";
     231                }, null);
     232            }
     233        }
     234
     235        #endregion
     236
    82237        private void Button_Click(object sender, RoutedEventArgs e)
    83238        {
     
    104259            }
    105260        }
    106 
    107         #region Informations
    108 
    109         public void UpdateInformation(KeySearcher.KeySearcher keySearcher, KeySearcherSettings keySearcherSettings)
    110         {
    111             if (keySearcher.Pattern == null || !keySearcher.Pattern.testWildcardKey(keySearcherSettings.Key) || keySearcherSettings.ChunkSize == 0)
    112             {
    113                 return;
    114             }
    115 
    116             var keyPattern = new KeyPattern(keySearcher.ControlMaster.getKeyPattern()) { WildcardKey = keySearcherSettings.Key };
    117             var keysPerChunk = Math.Pow(2, keySearcherSettings.ChunkSize);
    118             var keyPatternPool = new KeyPatternPool(keyPattern, new BigInteger(keysPerChunk));
    119 
    120             if (keyPatternPool.Length > 9999999999)
    121             {
    122                 TotalAmountOfBlocks.Content = keyPatternPool.Length.ToString().Substring(0, 10) + "...";
    123             }
    124             else
    125             {
    126                 TotalAmountOfBlocks.Content = keyPatternPool.Length;
    127             }
    128 
    129             TotalAmountOfKeys.Content = new BigInteger(keysPerChunk) * keyPatternPool.Length;
    130 
    131 
    132             //Under Construction
    133             //--------
    134             TotalBlocksTested.Content = "???";
    135             TotalKeysTested.Content = "???";
    136             //--------
    137         }
    138         #endregion
    139261    }
    140262
Note: See TracChangeset for help on using the changeset viewer.