source: trunk/CrypPlugins/KeySearcher/P2P/Tree/Leaf.cs @ 1693

Last change on this file since 1693 was 1693, checked in by Paul Lelgemann, 11 years ago

o Work on the distributed KeySearcher cache

File size: 1.9 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Numerics;
4using KeySearcher.Helper;
5using KeySearcher.P2P.Exceptions;
6using KeySearcher.P2P.Storage;
7
8namespace KeySearcher.P2P.Tree
9{
10    class Leaf : NodeBase
11    {
12        internal DateTime LastReservationDate;
13        private bool isLeafReserved;
14
15        public Leaf(StorageHelper storageHelper, KeyQualityHelper keyQualityHelper, Node parentNode, BigInteger id, string distributedJobIdentifier)
16            : base(storageHelper, keyQualityHelper, parentNode, id, id, distributedJobIdentifier)
17        {
18        }
19
20        public void HandleResults(LinkedList<KeySearcher.ValueKey> result)
21        {
22            Result = result;
23            UpdateDht();
24        }
25
26        public BigInteger PatternId()
27        {
28            return From;
29        }
30
31        public override Leaf CalculatableLeaf(bool useReservedNodes)
32        {
33            if (IsCalculated())
34            {
35                throw new AlreadyCalculatedException();
36            }
37
38            return this;
39        }
40
41        public override bool IsCalculated()
42        {
43            return Result.Count > 0;
44        }
45
46        public override void Reset()
47        {
48        }
49
50        public override void UpdateCache()
51        {
52            var dateFiveMinutesBefore = DateTime.UtcNow.Subtract(new TimeSpan(0, 5, 0));
53            isLeafReserved = dateFiveMinutesBefore < LastReservationDate;
54        }
55
56        public bool ReserveLeaf()
57        {
58            LastReservationDate = DateTime.UtcNow;
59            return StorageHelper.UpdateInDht(this).IsSuccessful();
60        }
61
62        public override bool IsReserverd()
63        {
64            return isLeafReserved;
65        }
66
67        public override string ToString()
68        {
69            return base.ToString() + ", last reservation date " + LastReservationDate;
70        }
71    }
72}
Note: See TracBrowser for help on using the repository browser.