From f876f153013604d8af647541be58c59862a85ca7 Mon Sep 17 00:00:00 2001 From: Joe Crayne Date: Tue, 14 Jan 2020 01:47:57 -0500 Subject: Added startup nodes to CommonAPI search query. --- kad/src/Network/Kademlia/CommonAPI.hs | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'kad') 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 @@ {-# LANGUAGE ExistentialQuantification #-} +{-# LANGUAGE NamedFieldPuns #-} module Network.Kademlia.CommonAPI ( module Network.Kademlia.CommonAPI , refreshBuckets @@ -58,8 +59,16 @@ data DHTQuery nid ni = forall addr r tok qk. , qhandler :: ni -> nid -> IO ([ni], [r], Maybe tok) -- ^ Invoked on local node, when there is no query destination. , qshowR :: r -> String , qshowTok :: tok -> Maybe String + , qbootNodes :: nid -> IO [ni] } +-- Can be used to initialize qbootNodes like this: +-- fix \q -> DHTQuery { ... , qbootNodes = genericBootNodes bkts q } +genericBootNodes :: Ord nid => TVar (BucketList ni) -> DHTQuery nid ni -> nid -> IO [ni] +genericBootNodes dhtBuckets DHTQuery{qsearch} nid = + atomically $ R.kclosest (searchSpace qsearch) (searchK qsearch) nid + <$> readTVar dhtBuckets + data DHTAnnouncable nid = forall dta tok ni r. ( Show r , Typeable dta -- information being announced -- cgit v1.2.3