Changeset 2549


Ignore:
Timestamp:
Feb 1, 2011, 6:42:01 PM (10 years ago)
Author:
Sven Rech
Message:

fixed integrateIntoParents in distributed keysearcher

Location:
trunk/CrypPlugins/KeySearcher/P2P
Files:
2 edited

Legend:

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

    r2539 r2549  
    4646            {
    4747                binaryWriter.Write(valueKey.key);
     48                binaryWriter.Write(valueKey.keya.Length);
     49                binaryWriter.Write(valueKey.keya);
    4850                binaryWriter.Write(valueKey.value);
    4951                binaryWriter.Write(valueKey.decryption.Length);
     
    180182                for (var i = 0; i < resultCount; i++)
    181183                {
     184                    var key = binaryReader.ReadString();
     185                    int keyaLength = binaryReader.ReadInt32();
    182186                    var newResult = new KeySearcher.ValueKey
    183                                             {
    184                                                 key = binaryReader.ReadString(),
     187                                        {
     188                                                key = key,
     189                                                keya = binaryReader.ReadBytes(keyaLength),
    185190                                                value = binaryReader.ReadDouble(),
    186191                                                decryption = binaryReader.ReadBytes(binaryReader.ReadInt32()),
     
    190195                                                maschname = binaryReader.ReadString()
    191196                                            };
    192                     nodeToUpdate.Result.AddLast(newResult);                   
     197                    nodeToUpdate.PushToResults(newResult);
    193198                }
    194199
  • trunk/CrypPlugins/KeySearcher/P2P/Tree/NodeBase.cs

    r2535 r2549  
    8888        }
    8989
     90        public void PushToResults(KeySearcher.ValueKey valueKey)
     91        {
     92            if (Result.Contains(valueKey))
     93                return;
     94
     95            var node = Result.First;
     96            while (node != null)
     97            {
     98                if (KeyQualityHelper.IsBetter(valueKey.value, node.Value.value))
     99                {
     100                    Result.AddBefore(node, valueKey);
     101                    if (Result.Count > 10)
     102                        Result.RemoveLast();
     103                    break;
     104                }
     105                node = node.Next;
     106            }//end while
     107
     108            if (Result.Count < 10)
     109                Result.AddLast(valueKey);
     110        }
     111
    90112        private void IntegrateResultsIntoParent()
    91113        {
    92             if (ParentNode.Result.Count == 0)
    93             {
    94                 KeyQualityHelper.FillListWithDummies(10, ParentNode.Result);
    95             }
    96 
    97114            foreach (var valueKey in Result)
    98115            {
    99                 if (ParentNode.Result.Contains(valueKey))
    100                     continue;
    101 
    102                 var node = ParentNode.Result.First;
    103                 while (node != null)
    104                 {
    105                     if (KeyQualityHelper.IsBetter(valueKey.value, node.Value.value))
    106                     {
    107                         ParentNode.Result.AddBefore(node, valueKey);
    108                         if (ParentNode.Result.Count > 10)
    109                             ParentNode.Result.RemoveLast();
    110                         break;
    111                     }
    112                     node = node.Next;
    113                 }//end while
     116                ParentNode.PushToResults(valueKey);
    114117            }
    115118
Note: See TracChangeset for help on using the changeset viewer.