Ignore:
Timestamp:
Dec 1, 2010, 11:59:21 AM (11 years ago)
Author:
nolte
Message:

Full working Versionnumber code added.
INFO: THE UNCOMMENTED UPDATE WILL BE COMITTED THURSDAY 8PM (20Uhr :P )
PLEASE UPDATE YOUR SVN AFTERWARDS!

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/KeySearcher/P2P/Tree/Node.cs

    r2024 r2142  
    2424        private void LoadOrUpdateChildNodes()
    2525        {
    26             var middle = (From + To)/2;
     26            try
     27            {
     28                var middle = (From + To) / 2;
    2729
    28             if (!LeftChildFinished)
    29             {
    30                 if (leftChild == null)
     30                if (!LeftChildFinished)
    3131                {
    32                     leftChild = NodeFactory.CreateNode(StorageHelper, KeyQualityHelper, this, From, middle,
    33                                                         DistributedJobIdentifier);
     32                    if (leftChild == null)
     33                    {
     34                        leftChild = NodeFactory.CreateNode(StorageHelper, KeyQualityHelper, this, From, middle,
     35                                                            DistributedJobIdentifier);
     36                    }
     37                    else
     38                    {
     39                        StorageHelper.UpdateFromDht(leftChild);
     40                    }
    3441                }
    35                 else
     42
     43                // Only load right node, if the left one is finished or reserved
     44                if ((LeftChildFinished || leftChild.IsReserved()) && !RightChildFinished)
    3645                {
    37                     StorageHelper.UpdateFromDht(leftChild);
     46                    if (rightChild == null)
     47                    {
     48                        rightChild = NodeFactory.CreateNode(StorageHelper, KeyQualityHelper, this, middle + 1, To,
     49                                                             DistributedJobIdentifier);
     50                    }
     51                    else
     52                    {
     53                        StorageHelper.UpdateFromDht(rightChild);
     54                    }
    3855                }
    3956            }
    40 
    41             // Only load right node, if the left one is finished or reserved
    42             if ((LeftChildFinished || leftChild.IsReserved()) && !RightChildFinished)
     57            catch (KeySearcherStopException)
    4358            {
    44                 if (rightChild == null)
    45                 {
    46                     rightChild = NodeFactory.CreateNode(StorageHelper, KeyQualityHelper, this, middle + 1, To,
    47                                                          DistributedJobIdentifier);
    48                 }
    49                 else
    50                 {
    51                     StorageHelper.UpdateFromDht(rightChild);
    52                 }
    53             }
     59                throw new KeySearcherStopException();
     60            }               
    5461        }
    5562
     
    6774        public override void UpdateCache()
    6875        {
    69             LoadOrUpdateChildNodes();
     76            try
     77            {
     78                LoadOrUpdateChildNodes();
     79            }
     80            catch (KeySearcherStopException)
     81            {
     82                throw new KeySearcherStopException();
     83            }
    7084
    7185            leftChildReserved = LeftChildFinished || leftChild.IsReserved();
Note: See TracChangeset for help on using the changeset viewer.