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

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

+ Added TODOs

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