source: trunk/CrypPlugins/KeySearcher/P2P/Nodes/Leaf.cs @ 1665

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

+ CrypP2P: Return types of synchronous methods Store/Retrieve/Remove changed
o Work on the distributed KeySearcher

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