mirror of
https://github.com/logos-storage/logos-storage-nim-dht.git
synced 2026-01-08 00:13:07 +00:00
remove lookupWorkerFast duplicate code
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
This commit is contained in:
parent
a540568e77
commit
589a878985
@ -677,25 +677,18 @@ proc lookupDistances*(target, dest: NodeId): seq[uint16] =
|
|||||||
result.add(td - uint16(i))
|
result.add(td - uint16(i))
|
||||||
inc i
|
inc i
|
||||||
|
|
||||||
proc lookupWorker(d: Protocol, destNode: Node, target: NodeId):
|
proc lookupWorker(d: Protocol, destNode: Node, target: NodeId, fast: bool):
|
||||||
Future[seq[Node]] {.async.} =
|
Future[seq[Node]] {.async.} =
|
||||||
let dists = lookupDistances(target, destNode.id)
|
|
||||||
|
|
||||||
|
let r =
|
||||||
|
if fast:
|
||||||
|
await d.findNodeFast(destNode, target)
|
||||||
|
else:
|
||||||
# Instead of doing max `LookupRequestLimit` findNode requests, make use
|
# Instead of doing max `LookupRequestLimit` findNode requests, make use
|
||||||
# of the discv5.1 functionality to request nodes for multiple distances.
|
# of the discv5.1 functionality to request nodes for multiple distances.
|
||||||
let r = await d.findNode(destNode, dists)
|
let dists = lookupDistances(target, destNode.id)
|
||||||
if r.isOk:
|
await d.findNode(destNode, dists)
|
||||||
result.add(r[])
|
|
||||||
|
|
||||||
# Attempt to add all nodes discovered
|
|
||||||
for n in result:
|
|
||||||
discard d.addNode(n)
|
|
||||||
|
|
||||||
proc lookupWorkerFast(d: Protocol, destNode: Node, target: NodeId):
|
|
||||||
Future[seq[Node]] {.async.} =
|
|
||||||
## use terget NodeId based find_node
|
|
||||||
|
|
||||||
let r = await d.findNodeFast(destNode, target)
|
|
||||||
if r.isOk:
|
if r.isOk:
|
||||||
result.add(r[])
|
result.add(r[])
|
||||||
|
|
||||||
@ -726,10 +719,7 @@ proc lookup*(d: Protocol, target: NodeId, fast: bool = false): Future[seq[Node]]
|
|||||||
while i < closestNodes.len and pendingQueries.len < Alpha:
|
while i < closestNodes.len and pendingQueries.len < Alpha:
|
||||||
let n = closestNodes[i]
|
let n = closestNodes[i]
|
||||||
if not asked.containsOrIncl(n.id):
|
if not asked.containsOrIncl(n.id):
|
||||||
if fast:
|
pendingQueries.add(d.lookupWorker(n, target, fast))
|
||||||
pendingQueries.add(d.lookupWorkerFast(n, target))
|
|
||||||
else:
|
|
||||||
pendingQueries.add(d.lookupWorker(n, target))
|
|
||||||
inc i
|
inc i
|
||||||
|
|
||||||
trace "discv5 pending queries", total = pendingQueries.len
|
trace "discv5 pending queries", total = pendingQueries.len
|
||||||
@ -1101,7 +1091,7 @@ proc query*(d: Protocol, target: NodeId, k = BUCKET_SIZE): Future[seq[Node]]
|
|||||||
while i < min(queryBuffer.len, k) and pendingQueries.len < Alpha:
|
while i < min(queryBuffer.len, k) and pendingQueries.len < Alpha:
|
||||||
let n = queryBuffer[i]
|
let n = queryBuffer[i]
|
||||||
if not asked.containsOrIncl(n.id):
|
if not asked.containsOrIncl(n.id):
|
||||||
pendingQueries.add(d.lookupWorker(n, target))
|
pendingQueries.add(d.lookupWorker(n, target, false))
|
||||||
inc i
|
inc i
|
||||||
|
|
||||||
trace "discv5 pending queries", total = pendingQueries.len
|
trace "discv5 pending queries", total = pendingQueries.len
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user