Changeset 2453


Ignore:
Timestamp:
Jan 24, 2011, 5:45:10 PM (10 years ago)
Author:
Sven Rech
Message:

fixed StorageHelper

File:
1 edited

Legend:

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

    r2452 r2453  
    117117        internal RequestResult UpdateFromDht(NodeBase nodeToUpdate, bool forceUpdate = false)
    118118        {
     119            try
     120            {
    119121                if (!forceUpdate && nodeToUpdate.LastUpdate > DateTime.Now.Subtract(new TimeSpan(0, 0, 5)))
    120122                {
    121                     return new RequestResult {Status = RequestResultType.Success};
     123                    return new RequestResult { Status = RequestResultType.Success };
    122124                }
    123125
     
    137139                var oldVersionFlag = CheckNodeVersion(binaryReader);
    138140
    139                 try
    140                 {
    141                     if (nodeToUpdate is Node)
     141                if (nodeToUpdate is Node)
     142                {
     143                    UpdateNodeFromDht((Node)nodeToUpdate, binaryReader);
     144                }
     145                else
     146                {
     147                    UpdateLeafFromDht((Leaf)nodeToUpdate, binaryReader);
     148                }
     149
     150                // Load results
     151                var resultCount = binaryReader.ReadInt32();
     152
     153                for (var i = 0; i < resultCount; i++)
     154                {
     155                    if (oldVersionFlag < 5)
    142156                    {
    143                         UpdateNodeFromDht((Node)nodeToUpdate, binaryReader);
     157                        var newResult = new KeySearcher.ValueKey
     158                                            {
     159                                                key = binaryReader.ReadString(),
     160                                                value = binaryReader.ReadDouble(),
     161                                                decryption = binaryReader.ReadBytes(binaryReader.ReadInt32()),
     162                                                user = "Unknown",
     163                                                time = DateTime.MinValue,
     164                                                maschid = 666,
     165                                                maschname = "Devil"
     166                                            };
     167                        nodeToUpdate.Result.AddLast(newResult);
    144168                    }
    145169                    else
    146170                    {
    147                         UpdateLeafFromDht((Leaf)nodeToUpdate, binaryReader);
     171                        var newResult = new KeySearcher.ValueKey
     172                                            {
     173                                                key = binaryReader.ReadString(),
     174                                                value = binaryReader.ReadDouble(),
     175                                                decryption = binaryReader.ReadBytes(binaryReader.ReadInt32()),
     176                                                user = binaryReader.ReadString(),
     177                                                time = DateTime.FromBinary(binaryReader.ReadInt64()),
     178                                                maschid = binaryReader.ReadInt64(),
     179                                                maschname = binaryReader.ReadString()
     180                                            };
     181                        nodeToUpdate.Result.AddLast(newResult);
    148182                    }
    149183                }
    150                 catch (Exception e)
    151                 {
    152                     // client id not available, use default
    153                     keySearcher.GuiLogMessage(e.Message + ": Node causing the failure: " + nodeToUpdate.ToString(), NotificationLevel.Error);
    154                     nodeToUpdate.Reset();
    155                     throw new InvalidOperationException();
    156                 }
    157 
    158                 // Load results
    159                 var resultCount = binaryReader.ReadInt32();
    160 
    161                 for (var i = 0; i < resultCount; i++)
    162                 {
    163                     try
     184
     185                if (binaryReader.BaseStream.Length != binaryReader.BaseStream.Position)
     186                {
     187                    //Reading the number of avatarnames
     188                    int avatarcount = binaryReader.ReadInt32();
     189                    for (int i = 0; i < avatarcount; i++)
    164190                    {
    165                         if (oldVersionFlag < 5)
     191                        //Reading the avatarname and the maschine-count for this name
     192                        string avatarname = binaryReader.ReadString();
     193                        int maschcount = binaryReader.ReadInt32();
     194                        var readMaschcount = new Dictionary<long, Information>();
     195
     196                        for (int j = 0; j < maschcount; j++)
    166197                        {
    167                             var newResult = new KeySearcher.ValueKey
    168                                                 {
    169                                                     key = binaryReader.ReadString(),
    170                                                     value = binaryReader.ReadDouble(),
    171                                                     decryption = binaryReader.ReadBytes(binaryReader.ReadInt32()),
    172                                                     user = "Unknown",
    173                                                     time = DateTime.MinValue,
    174                                                     maschid = 666,
    175                                                     maschname = "Devil"
    176                                                 };
    177                             nodeToUpdate.Result.AddLast(newResult);
     198                            //reading the IDs and patterncount
     199                            long maschID = binaryReader.ReadInt64();
     200                            int count = binaryReader.ReadInt32();
     201                            string host = binaryReader.ReadString();
     202                            var date = DateTime.FromBinary(binaryReader.ReadInt64());
     203                            readMaschcount.Add(maschID, new Information() { Count = count, Hostname = host, Date = date });
     204
     205                        }
     206
     207                        if (nodeToUpdate.Activity.ContainsKey(avatarname))
     208                        {
     209                            nodeToUpdate.Activity[avatarname] = readMaschcount;
    178210                        }
    179211                        else
    180212                        {
    181                             var newResult = new KeySearcher.ValueKey
    182                                                 {
    183                                                     key = binaryReader.ReadString(),
    184                                                     value = binaryReader.ReadDouble(),
    185                                                     decryption = binaryReader.ReadBytes(binaryReader.ReadInt32()),
    186                                                     user = binaryReader.ReadString(),
    187                                                     time = DateTime.FromBinary(binaryReader.ReadInt64()),
    188                                                     maschid = binaryReader.ReadInt64(),
    189                                                     maschname = binaryReader.ReadString()
    190                                                 };
    191                             nodeToUpdate.Result.AddLast(newResult);
     213                            nodeToUpdate.Activity.Add(avatarname, readMaschcount);
    192214                        }
    193215                    }
    194                     catch(Exception e)
    195                     {
    196                         keySearcher.GuiLogMessage(e.Message + ": Node causing the failure: " + nodeToUpdate.ToString(),NotificationLevel.Error);
    197                         nodeToUpdate.Reset();
    198                         throw new InvalidOperationException();
    199                     }                                       
    200                 }
    201 
    202                 try
    203                 {
    204                     if (binaryReader.BaseStream.Length != binaryReader.BaseStream.Position)
    205                     {
    206                         //Reading the number of avatarnames
    207                         int avatarcount = binaryReader.ReadInt32();
    208                         for (int i = 0; i < avatarcount; i++)
    209                         {
    210                             //Reading the avatarname and the maschine-count for this name
    211                             string avatarname = binaryReader.ReadString();
    212                             int maschcount = binaryReader.ReadInt32();
    213                             var readMaschcount = new Dictionary<long, Information>();
    214 
    215                             for (int j = 0; j < maschcount; j++)
    216                             {
    217                                 //reading the IDs and patterncount
    218                                 long maschID = binaryReader.ReadInt64();
    219                                 int count = binaryReader.ReadInt32();
    220                                 string host = binaryReader.ReadString();
    221                                 var date = DateTime.FromBinary(binaryReader.ReadInt64());
    222                                 readMaschcount.Add(maschID, new Information() { Count = count, Hostname = host, Date = date });
    223 
    224                             }
    225 
    226                             if (nodeToUpdate.Activity.ContainsKey(avatarname))
    227                             {
    228                                 nodeToUpdate.Activity[avatarname] = readMaschcount;
    229                             }
    230                             else
    231                             {
    232                                 nodeToUpdate.Activity.Add(avatarname, readMaschcount);
    233                             }
    234                         }
    235                     }
    236 
    237                 }
    238                 catch (Exception e)
    239                 {
    240                     keySearcher.GuiLogMessage(e.Message + ": Node causing the failure: " + nodeToUpdate.ToString(), NotificationLevel.Error);
    241                     nodeToUpdate.Reset();
    242                     throw new InvalidOperationException();
    243                 }
    244 
     216                }
    245217
    246218                if (resultCount > 0)
     
    253225                nodeToUpdate.UpdateCache();
    254226                return requestResult;
     227            }
     228            catch (Exception e)
     229            {
     230                // client id not available, use default
     231                keySearcher.GuiLogMessage(e.Message + ": Node causing the failure: " + nodeToUpdate.ToString(), NotificationLevel.Error);
     232                nodeToUpdate.Reset();
     233                throw new InvalidOperationException();
     234            }
    255235        }
    256236
     
    351331                throw new KeySearcherStopException();
    352332            }
    353             catch (Exception)
    354             {
    355                 return 0;
    356             }
    357333        }
    358334
Note: See TracChangeset for help on using the changeset viewer.