diff options
author | Joe Crayne <joe@jerkface.net> | 2020-01-14 01:47:57 -0500 |
---|---|---|
committer | Joe Crayne <joe@jerkface.net> | 2020-01-14 03:37:41 -0500 |
commit | f876f153013604d8af647541be58c59862a85ca7 (patch) | |
tree | 6f6b1f03bdf93ac223199279809691f8210c03c5 /kad | |
parent | cb28281a2acabf87e91582ce5ace562544ae2730 (diff) |
Added startup nodes to CommonAPI search query.
Diffstat (limited to 'kad')
-rw-r--r-- | kad/src/Network/Kademlia/CommonAPI.hs | 9 |
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 #-} | ||
2 | module Network.Kademlia.CommonAPI | 3 | module 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 } | ||
67 | genericBootNodes :: Ord nid => TVar (BucketList ni) -> DHTQuery nid ni -> nid -> IO [ni] | ||
68 | genericBootNodes dhtBuckets DHTQuery{qsearch} nid = | ||
69 | atomically $ R.kclosest (searchSpace qsearch) (searchK qsearch) nid | ||
70 | <$> readTVar dhtBuckets | ||
71 | |||
63 | data DHTAnnouncable nid = forall dta tok ni r. | 72 | data 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 |