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

Last change on this file since 2011 was 2011, checked in by Sven Rech, 11 years ago

set reservation timeout to 30 minutes

File size: 2.0 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        private const int RESERVATIONTIMEOUT = 30;
15
16        public Leaf(StorageHelper storageHelper, KeyQualityHelper keyQualityHelper, Node parentNode, BigInteger id, string distributedJobIdentifier)
17            : base(storageHelper, keyQualityHelper, parentNode, id, id, distributedJobIdentifier)
18        {
19        }
20
21        public void HandleResults(LinkedList<KeySearcher.ValueKey> result)
22        {
23            Result = result;
24            UpdateDht();
25        }
26
27        public BigInteger PatternId()
28        {
29            return From;
30        }
31
32        public override Leaf CalculatableLeaf(bool useReservedNodes)
33        {
34            if (IsCalculated())
35            {
36                throw new AlreadyCalculatedException();
37            }
38
39            return this;
40        }
41
42        public override bool IsCalculated()
43        {
44            return Result.Count > 0;
45        }
46
47        public override void Reset()
48        {
49        }
50
51        public override void UpdateCache()
52        {
53            var dateSomeMinutesBefore = DateTime.UtcNow.Subtract(new TimeSpan(0, RESERVATIONTIMEOUT, 0));
54            isLeafReserved = dateSomeMinutesBefore < LastReservationDate;
55        }
56
57        public bool ReserveLeaf()
58        {
59            LastReservationDate = DateTime.UtcNow;
60            return StorageHelper.UpdateInDht(this).IsSuccessful();
61        }
62
63        public override bool IsReserverd()
64        {
65            return isLeafReserved;
66        }
67
68        public override string ToString()
69        {
70            return base.ToString() + ", last reservation date " + LastReservationDate;
71        }
72    }
73}
Note: See TracBrowser for help on using the repository browser.