diff options
author | joe <joe@jerkface.net> | 2017-09-06 01:27:36 -0400 |
---|---|---|
committer | joe <joe@jerkface.net> | 2017-09-06 01:31:41 -0400 |
commit | 921f845e56033b959247dc0347083e287963f677 (patch) | |
tree | 4ff89d4186c255d38b0a59a7eb5b47ad521be299 /Kademlia.hs | |
parent | 2423be0ebf0bcdc4568b251cd8f9a9830bf9b04f (diff) |
Removed Data.Bits requirement for Kademlia node id.
Diffstat (limited to 'Kademlia.hs')
-rw-r--r-- | Kademlia.hs | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/Kademlia.hs b/Kademlia.hs index f2288642..2620948d 100644 --- a/Kademlia.hs +++ b/Kademlia.hs | |||
@@ -30,6 +30,7 @@ import qualified Data.Wrapper.PSQInt as Int | |||
30 | ;import Data.Wrapper.PSQInt (pattern (:->)) | 30 | ;import Data.Wrapper.PSQInt (pattern (:->)) |
31 | import Network.Address (bucketRange,genBucketSample) | 31 | import Network.Address (bucketRange,genBucketSample) |
32 | import Network.BitTorrent.DHT.Search | 32 | import Network.BitTorrent.DHT.Search |
33 | import System.Entropy | ||
33 | import System.Timeout | 34 | import System.Timeout |
34 | import Text.PrettyPrint as PP hiding (($$), (<>)) | 35 | import Text.PrettyPrint as PP hiding (($$), (<>)) |
35 | import Text.PrettyPrint.HughesPJClass hiding (($$), (<>)) | 36 | import Text.PrettyPrint.HughesPJClass hiding (($$), (<>)) |
@@ -268,15 +269,17 @@ forkPollForRefresh interval psq refresh = do | |||
268 | again | 269 | again |
269 | 270 | ||
270 | refreshBucket :: forall nid tok ni addr. | 271 | refreshBucket :: forall nid tok ni addr. |
271 | ( Show nid, FiniteBits nid, Serialize nid, Ord nid, Ord ni, Hashable nid, Hashable ni, Ord addr ) => | 272 | ( Show nid, Serialize nid, Ord nid, Ord ni, Hashable nid, Hashable ni, Ord addr ) => |
272 | Search nid addr tok ni ni -> TVar (BucketList ni) -> Int -> IO Int | 273 | Search nid addr tok ni ni -> TVar (BucketList ni) -> Int -> IO Int |
273 | refreshBucket sch var n = do | 274 | refreshBucket sch var n = do |
274 | tbl <- atomically (readTVar var) | 275 | tbl <- atomically (readTVar var) |
275 | let count = bktCount tbl | 276 | let count = bktCount tbl |
276 | nid = kademliaLocation (searchSpace sch) (thisNode tbl) | 277 | nid = kademliaLocation (searchSpace sch) (thisNode tbl) |
277 | sample <- if n+1 >= count -- Is this the last bucket? | 278 | sample <- if n+1 >= count -- Is this the last bucket? |
278 | then return nid -- Yes? Search our own id. | 279 | then return nid -- Yes? Search our own id. |
279 | else genBucketSample nid -- No? Generate a random id. | 280 | else kademliaSample (searchSpace sch) -- No? Generate a random id. |
281 | getEntropy | ||
282 | nid | ||
280 | (bucketRange n (n + 1 < count)) | 283 | (bucketRange n (n + 1 < count)) |
281 | fin <- atomically $ newTVar False | 284 | fin <- atomically $ newTVar False |
282 | resultCounter <- atomically $ newTVar Set.empty | 285 | resultCounter <- atomically $ newTVar Set.empty |
@@ -314,7 +317,7 @@ refreshBucket sch var n = do | |||
314 | bootstrap :: | 317 | bootstrap :: |
315 | ( Show nid | 318 | ( Show nid |
316 | , Serialize nid | 319 | , Serialize nid |
317 | , FiniteBits nid | 320 | -- , FiniteBits nid |
318 | , Hashable ni | 321 | , Hashable ni |
319 | , Hashable nid | 322 | , Hashable nid |
320 | , Ord ni | 323 | , Ord ni |