Changeset 2233


Ignore:
Timestamp:
Dec 20, 2010, 2:25:52 PM (11 years ago)
Author:
nolte
Message:

Statistic update. The CSV additionally shows the name of the host and the last time this computer gained a pattern point (PP)

Location:
trunk/CrypPlugins/KeySearcher
Files:
3 edited

Legend:

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

    r2220 r2233  
    4343
    4444namespace KeySearcher
    45 {   
     45{
     46    public class Information
     47    {
     48        public int Count { get; set; }
     49        public string Hostname { get; set; }
     50        public DateTime Date { get; set; }
     51    }
     52
    4653    [Author("Sven Rech, Nils Kopal, Raoul Falk, Dennis Nolte", "rech@cryptool.org", "Uni Duisburg-Essen", "http://www.uni-due.de")]
    4754    [PluginInfo(false, "KeySearcher", "Bruteforces a decryption algorithm.", "KeySearcher/DetailedDescription/Description.xaml", "KeySearcher/Images/icon.png")]
     
    5158        /// used for creating the UserStatistics
    5259        /// </summary>
    53         private Dictionary<string, Dictionary<long, int>> statistic;
     60        private Dictionary<string, Dictionary<long, Information>> statistic;
    5461        private bool initialized;
     62
     63
    5564        /// <summary>
    5665        /// used for creating the TopList
     
    738747            valuequeue = Queue.Synchronized(new Queue());
    739748
    740             statistic = new Dictionary<string, Dictionary<long, int>>();
     749            statistic = new Dictionary<string, Dictionary<long, Information>>();
    741750            initialized = false;
    742751
     
    12151224        }
    12161225
    1217         internal void IntegrateNewResults(LinkedList<ValueKey> updatedCostList, Dictionary<string, Dictionary<long, int>> updatedStatistics, string dataIdentifier)
     1226        internal void IntegrateNewResults(LinkedList<ValueKey> updatedCostList, Dictionary<string, Dictionary<long, Information>> updatedStatistics, string dataIdentifier)
    12181227        {
    12191228            foreach (var valueKey in updatedCostList)
     
    12281237            {
    12291238                //taking the dictionary in this avatarname
    1230                 Dictionary<long, int> MaschCount = updatedStatistics[avname];
     1239                Dictionary<long, Information> MaschCount = updatedStatistics[avname];
    12311240
    12321241                //if the avatarname already exists in the statistics
     
    12361245                    {
    12371246                        //get the statistic maschcount for this avatarname
    1238                         Dictionary<long, int> statMaschCount = statistic[avname];
     1247                        Dictionary<long, Information> statMaschCount = statistic[avname];
    12391248                       
    12401249                        //if the id of the Maschine already exists for this avatarname
    12411250                        if (statMaschCount.ContainsKey(id))
    12421251                        {
    1243                             if (!initialized || ((MaschCount[id] == 1) && (MaschCount.Keys.Count == 1)))
     1252                            if (!initialized || ((MaschCount[id].Count == 1) && (MaschCount.Keys.Count == 1)))
    12441253                            {
    1245                                 statMaschCount[id] = statMaschCount[id] + MaschCount[id];
     1254                                statMaschCount[id].Count = statMaschCount[id].Count + MaschCount[id].Count;
     1255                                statMaschCount[id].Hostname = MaschCount[id].Hostname;
     1256                                statMaschCount[id].Date = MaschCount[id].Date;
    12461257                                statistic[avname] = statMaschCount;
    12471258                            }
     
    12691280            using (StreamWriter sw = new StreamWriter(string.Format("{0}\\UserRanking{1}.csv", DirectoryHelper.DirectoryLocal, dataIdentifier)))
    12701281            {
    1271                 sw.WriteLine("Avatarname" + ";" + "MaschinenID" + ";" + "Anzahl Pattern");
     1282                sw.WriteLine("Avatarname" + ";" + "MaschinenID" + ";" + "Hostname" + ";"+ "Anzahl Pattern" + ";" + "Last Update");
    12721283                foreach (string avatar in statistic.Keys)
    12731284                {
    12741285                    foreach(long mID in statistic[avatar].Keys)
    12751286                    {
    1276                         sw.WriteLine(avatar + ";" + mID.ToString() + ";" + statistic[avatar][mID].ToString());
     1287                        sw.WriteLine(avatar + ";" + mID.ToString() + ";" + statistic[avatar][mID].Hostname + ";" + statistic[avatar][mID].Count + ";" + statistic[avatar][mID].Date);
    12771288                    }
    12781289                }
  • trunk/CrypPlugins/KeySearcher/P2P/Storage/StorageHelper.cs

    r2217 r2233  
    1818
    1919        //VERSIONNUMBER: Important. Set it +1 manually everytime the length of the MemoryStream Changes
    20         private const int version = 2;
     20        private const int version = 3;
     21        private static int oldVersionFlag = 0;
    2122
    2223        public StorageHelper(KeySearcher keySearcher, StatisticsGenerator statisticsGenerator, StatusContainer statusContainer)
     
    5253 
    5354            //Creating a copy of the activity dictionary
    54             Dictionary<String, Dictionary<long, int>> copyAct = nodeToUpdate.Activity;
     55            var copyAct = nodeToUpdate.Activity;
    5556
    5657            //Write number of avatarnames
     
    5859            foreach (string avatar in copyAct.Keys)
    5960            {
    60                 Dictionary<long, int> maschCopy = copyAct[avatar];
     61                var maschCopy = copyAct[avatar];
    6162                //write avatarname
    6263                binaryWriter.Write(avatar);
     
    6869                    //write the maschines and their patterncount
    6970                    binaryWriter.Write(maschID);
    70                     binaryWriter.Write(maschCopy[maschID]);
     71                    binaryWriter.Write(maschCopy[maschID].Count); //int 32
     72                    binaryWriter.Write(maschCopy[maschID].Hostname); //String
     73                    binaryWriter.Write(maschCopy[maschID].Date.ToBinary()); //DateTime
    7174                }
    7275            }
     
    141144                    string avatarname = binaryReader.ReadString();
    142145                    int maschcount = binaryReader.ReadInt32();
    143                     Dictionary<long, int> readMaschcount = new Dictionary<long, int>();
    144 
    145                     for(int j=0;j<maschcount;j++)
    146                     {
    147                         //reading the IDs and patterncount
    148                         long maschID = binaryReader.ReadInt64();
    149                         int count = binaryReader.ReadInt32();
    150                         readMaschcount.Add(maschID,count);
     146                    var readMaschcount = new Dictionary<long, Information>();
     147                   
     148                    //previous versions didn't had the Information
     149                    if (oldVersionFlag < version)
     150                    {
     151                        for (int j = 0; j < maschcount; j++)
     152                        {
     153                            //reading the IDs and patterncount
     154                            long maschID = binaryReader.ReadInt64();
     155                            int count = binaryReader.ReadInt32();
     156                            readMaschcount.Add(maschID, new Information(){Count = count, Hostname = "Unknown", Date = DateTime.MinValue});
     157                        }
     158                    }
     159                    else
     160                    {
     161                        for (int j = 0; j < maschcount; j++)
     162                        {
     163                            //reading the IDs and patterncount
     164                            long maschID = binaryReader.ReadInt64();
     165                            int count = binaryReader.ReadInt32();
     166                            string host = binaryReader.ReadString();
     167                            var date = DateTime.FromBinary(binaryReader.ReadInt64());
     168                            readMaschcount.Add(maschID, new Information() {Count = count, Hostname = host, Date = date});
     169                        }
    151170                    }
    152171                    if (nodeToUpdate.Activity.ContainsKey(avatarname))
     
    167186            if (resultCount > 0)
    168187            {
    169                 keySearcher.IntegrateNewResults(nodeToUpdate.Result,nodeToUpdate.Activity, nodeToUpdate.DistributedJobIdentifier);
     188                keySearcher.IntegrateNewResults(nodeToUpdate.Result, nodeToUpdate.Activity, nodeToUpdate.DistributedJobIdentifier);
    170189                statisticsGenerator.ProcessPatternResults(nodeToUpdate.Result);
    171190            }
     
    226245                    char magic = binaryReader.ReadChar();
    227246                    int versionInUse = binaryReader.ReadInt32();
     247                    oldVersionFlag = versionInUse;
    228248                    //Check if a newer Version is in use
    229249                    if (versionInUse > version)
  • trunk/CrypPlugins/KeySearcher/P2P/Tree/NodeBase.cs

    r2217 r2233  
    2525        //Dictionary Tests
    2626        public String Avatarname = "CrypTool2";
    27         public Dictionary<String, Dictionary<long, int>> Activity;
     27        public Dictionary<String, Dictionary<long, Information>> Activity;
    2828        protected bool integrated;
    2929
     
    3939            LastUpdate = DateTime.MinValue;
    4040            Result = new LinkedList<KeySearcher.ValueKey>();
    41             Activity = new Dictionary<string, Dictionary<long, int>>();
     41            Activity = new Dictionary<string, Dictionary<long, Information>>();
    4242            integrated = false;
    4343
     
    119119            {
    120120                //Collection of all avatarnames in activity of this node
    121                 Dictionary<String, Dictionary<long, int>>.KeyCollection keyColl = Activity.Keys;
     121                Dictionary<String, Dictionary<long, Information>>.KeyCollection keyColl = Activity.Keys;
    122122
    123123                foreach (string avname in keyColl)
    124124                {
    125125                    //taking the dictionary in this avatarname
    126                     Dictionary<long, int> MaschCount = Activity[avname];
     126                    Dictionary<long, Information> MaschCount = Activity[avname];
    127127
    128128                    //collecting der maschinID's for this avatarname
    129                     Dictionary<long, int>.KeyCollection maschColl = MaschCount.Keys;
     129                    Dictionary<long, Information>.KeyCollection maschColl = MaschCount.Keys;
    130130
    131131                    //if the avatarname already exists in the parentnode.activity
     
    135135                        {
    136136                            //get the parent maschcount for this avatarname
    137                             Dictionary<long, int> ParentMaschCount = ParentNode.Activity[avname];
     137                            Dictionary<long, Information> ParentMaschCount = ParentNode.Activity[avname];
    138138
    139139                            //if the id of the Maschine already exists for this avatarname
    140140                            if (ParentMaschCount.ContainsKey(id))
    141141                            {
    142                                 ParentMaschCount[id] = ParentMaschCount[id] + MaschCount[id];
     142                                ParentMaschCount[id].Count = ParentMaschCount[id].Count + MaschCount[id].Count;
     143                                ParentMaschCount[id].Hostname = MaschCount[id].Hostname;
     144                                ParentMaschCount[id].Date = MaschCount[id].Date;
    143145
    144146                                ParentNode.Activity[avname] = ParentMaschCount;
     
    172174        protected void UpdateActivity()
    173175        {
    174             Dictionary<long, int> Maschine = new Dictionary<long, int> { { Cryptool.PluginBase.Miscellaneous.UniqueIdentifier.GetID(), 1 } };
     176            var Maschine = new Dictionary<long, Information> { { Cryptool.PluginBase.Miscellaneous.UniqueIdentifier.GetID(), new Information() { Count = 1, Hostname = Cryptool.PluginBase.Miscellaneous.UniqueIdentifier.GetHostName(),Date = DateTime.UtcNow } } };
    175177            if (!Activity.ContainsKey(Avatarname))
    176178            {
Note: See TracChangeset for help on using the changeset viewer.