summaryrefslogtreecommitdiff
path: root/kad
diff options
context:
space:
mode:
authorJoe Crayne <joe@jerkface.net>2020-01-14 01:47:57 -0500
committerJoe Crayne <joe@jerkface.net>2020-01-14 03:37:41 -0500
commitf876f153013604d8af647541be58c59862a85ca7 (patch)
tree6f6b1f03bdf93ac223199279809691f8210c03c5 /kad
parentcb28281a2acabf87e91582ce5ace562544ae2730 (diff)
Added startup nodes to CommonAPI search query.
Diffstat (limited to 'kad')
-rw-r--r--kad/src/Network/Kademlia/CommonAPI.hs9
1 files changed, 9 insertions, 0 deletions
diff --git a/kad/src/Network/Kademlia/CommonAPI.hs b/kad/src/Network/Kademlia/CommonAPI.hs
index bcbfe9d8..4de7909d 100644
--- a/kad/src/Network/Kademlia/CommonAPI.hs
+++ b/kad/src/Network/Kademlia/CommonAPI.hs
@@ -1,4 +1,5 @@
1{-# LANGUAGE ExistentialQuantification #-} 1{-# LANGUAGE ExistentialQuantification #-}
2{-# LANGUAGE NamedFieldPuns #-}
2module Network.Kademlia.CommonAPI 3module Network.Kademlia.CommonAPI
3 ( module Network.Kademlia.CommonAPI 4 ( module Network.Kademlia.CommonAPI
4 , refreshBuckets 5 , refreshBuckets
@@ -58,8 +59,16 @@ data DHTQuery nid ni = forall addr r tok qk.
58 , qhandler :: ni -> nid -> IO ([ni], [r], Maybe tok) -- ^ Invoked on local node, when there is no query destination. 59 , qhandler :: ni -> nid -> IO ([ni], [r], Maybe tok) -- ^ Invoked on local node, when there is no query destination.
59 , qshowR :: r -> String 60 , qshowR :: r -> String
60 , qshowTok :: tok -> Maybe String 61 , qshowTok :: tok -> Maybe String
62 , qbootNodes :: nid -> IO [ni]
61 } 63 }
62 64
65-- Can be used to initialize qbootNodes like this:
66-- fix \q -> DHTQuery { ... , qbootNodes = genericBootNodes bkts q }
67genericBootNodes :: Ord nid => TVar (BucketList ni) -> DHTQuery nid ni -> nid -> IO [ni]
68genericBootNodes dhtBuckets DHTQuery{qsearch} nid =
69 atomically $ R.kclosest (searchSpace qsearch) (searchK qsearch) nid
70 <$> readTVar dhtBuckets
71
63data DHTAnnouncable nid = forall dta tok ni r. 72data DHTAnnouncable nid = forall dta tok ni r.
64 ( Show r 73 ( Show r
65 , Typeable dta -- information being announced 74 , Typeable dta -- information being announced