Changeset 2249


Ignore:
Timestamp:
Dec 22, 2010, 7:59:21 PM (11 years ago)
Author:
nolte
Message:

MTC saving...another try

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/KeySearcher/P2P/Storage/StorageHelper.cs

    r2248 r2249  
    1818
    1919        //VERSIONNUMBER: Important. Set it +1 manually everytime the length of the MemoryStream Changes
    20         private const int version = 3;
     20        private const int version = 4;
    2121        /*
    2222        -----------------------------Versionnumber Changelog---------------------------------------------
    23         |   Version 1: Added the Versionnumber to the Stream
     23        |   Version 1: Added the Versionnumber to the Stream (Leafs)
    2424        |   Version 2: Added the first User Statistics (Avatar,ID,Count) to the Stream
    2525        |   Version 3: Added version question (in front of results) + more statistic information (hostname,date) to the Stream
     26        |   Version 4: Reorganisation of the DHT structure. Update fully working now + features from previous versions available
    2627        -------------------------------------------------------------------------------------------------
    2728         */
     
    6364                binaryWriter.Write(valueKey.decryption);
    6465            }                       
    65            
    66  
     66             
    6767            //Creating a copy of the activity dictionary
    6868            var copyAct = nodeToUpdate.Activity;
     
    8787                }
    8888            }
    89 
    9089            return StoreWithStatistic(KeyInDht(nodeToUpdate), memoryStream.ToArray());
    9190        }
     
    125124
    126125            var binaryReader = new BinaryReader(new MemoryStream(nodeBytes));
    127 //---------------------------------------------------------------------------------------
    128             //TODO: VersionCheck!
    129             var oldVersionFlag = CheckVersion(binaryReader);
    130 //----------------------------------------------------------------------------------------
     126
     127            //oldVersionFlag will be used to garantee further changes in the Stream
     128            var oldVersionFlag = CheckNodeVersion(binaryReader);
     129
    131130            if (nodeToUpdate is Node)
    132131            {
     
    150149            }
    151150           
    152 
    153 
    154151            if (binaryReader.BaseStream.Length != binaryReader.BaseStream.Position)
    155152            { 
     
    163160                    var readMaschcount = new Dictionary<long, Information>();
    164161                   
    165                     //previous version 2 didn't had the Information
     162                    /*//previous version 2 didn't had the Information
    166163                    if (oldVersionFlag < 3)
    167164                    {
     
    179176                    else
    180177                    {
    181                         for (int j = 0; j < maschcount; j++)
    182                         {
    183                             //reading the IDs and patterncount
    184                             long maschID = binaryReader.ReadInt64();
    185                             int count = binaryReader.ReadInt32();
    186                             string host = binaryReader.ReadString(); 
    187                             var date = DateTime.FromBinary(binaryReader.ReadInt64());
    188 
    189                             if (maschID > 0)
    190                             {
    191                                 readMaschcount.Add(maschID, new Information() {Count = count, Hostname = host, Date = date});
    192                             }
    193                         }
    194                     }
     178                     */
     179                    for (int j = 0; j < maschcount; j++)
     180                    {
     181                        //reading the IDs and patterncount
     182                        long maschID = binaryReader.ReadInt64();
     183                        int count = binaryReader.ReadInt32();
     184                        string host = binaryReader.ReadString(); 
     185                        var date = DateTime.FromBinary(binaryReader.ReadInt64());
     186                        readMaschcount.Add(maschID, new Information() {Count = count, Hostname = host, Date = date});
     187                       
     188                    }
     189                   
    195190                    if (nodeToUpdate.Activity.ContainsKey(avatarname))
    196191                    {
     
    260255                //Checking if there's a version in the stream
    261256                int vers = binaryReader.PeekChar();
    262                 if (vers == 86 || vers ==87) //V infront of a Leaf and W infront of a Node
     257                if (vers == 86) //V infront of a Leaf
    263258                {
    264259                    //Reading the char and the versionnumber
     
    274269                else
    275270                {
    276                     return -1;
     271                    return 0;
    277272                }
    278273            }
     
    280275            {
    281276                throw new KeySearcherStopException();
    282             }
    283            
     277            }           
     278        }
     279
     280        private static int CheckNodeVersion(BinaryReader binaryReader)
     281        {
     282            try
     283            {
     284                //Checking if there's a version in the stream
     285                int vers = binaryReader.PeekChar();
     286                if (vers == 87) //W infront of a Node
     287                {
     288                    //Reading the char and the versionnumber
     289                    char magic = binaryReader.ReadChar();
     290                    int versionInUse = binaryReader.ReadInt32();
     291                    //Check if a newer Version is in use
     292                    if (versionInUse > version)
     293                    {
     294                        throw new KeySearcherStopException();
     295                    }
     296                    return versionInUse;
     297                }
     298                else
     299                {
     300                    return 0;
     301                }
     302            }
     303            catch (KeySearcherStopException)
     304            {
     305                throw new KeySearcherStopException();
     306            }
    284307        }
    285308
Note: See TracChangeset for help on using the changeset viewer.