summaryrefslogtreecommitdiff
path: root/kad/src/Network/Kademlia/CommonAPI.hs
diff options
context:
space:
mode:
Diffstat (limited to 'kad/src/Network/Kademlia/CommonAPI.hs')
-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