chore(discv5): waku discv5 module code cleanup

This commit is contained in:
Lorenzo Delgado 2023-02-06 11:36:37 +01:00 committed by GitHub
parent 19abd51976
commit 4ea6039323
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 33 additions and 24 deletions

View File

@ -5,12 +5,17 @@ else:
import
std/[strutils, options],
chronos, chronicles, metrics,
eth/keys,
eth/p2p/discoveryv5/[enr, node, protocol],
stew/results,
../../../../apps/wakunode2/config, ## TODO: Remove dependency on wakunode2 config module
../../utils/[peers, wakuenr]
chronos,
chronicles,
metrics,
eth/keys,
eth/p2p/discoveryv5/enr,
eth/p2p/discoveryv5/node,
eth/p2p/discoveryv5/protocol
import
../../utils/peers,
../../utils/wakuenr
export protocol, wakuenr
@ -20,33 +25,37 @@ declarePublicGauge waku_discv5_errors, "number of waku discv5 errors", ["type"]
logScope:
topics = "waku discv5"
type
WakuDiscoveryV5* = ref object
protocol*: protocol.Protocol
listening*: bool
####################
# Helper functions #
####################
proc parseBootstrapAddress(address: string):
Result[enr.Record, cstring] =
proc parseBootstrapAddress(address: string): Result[enr.Record, cstring] =
logScope:
address = string(address)
address = address
if address[0] == '/':
return err "MultiAddress bootstrap addresses are not supported"
return err("MultiAddress bootstrap addresses are not supported")
let lowerCaseAddress = toLowerAscii(address)
if lowerCaseAddress.startsWith("enr:"):
var enrRec: enr.Record
if not enrRec.fromURI(address):
return err("Invalid ENR bootstrap record")
return ok(enrRec)
elif lowerCaseAddress.startsWith("enode:"):
return err("ENode bootstrap addresses are not supported")
else:
let lowerCaseAddress = toLowerAscii(string address)
if lowerCaseAddress.startsWith("enr:"):
var enrRec: enr.Record
if enrRec.fromURI(string address):
return ok enrRec
return err "Invalid ENR bootstrap record"
elif lowerCaseAddress.startsWith("enode:"):
return err "ENode bootstrap addresses are not supported"
else:
return err "Ignoring unrecognized bootstrap address type"
return err("Ignoring unrecognized bootstrap address type")
proc addBootstrapNode*(bootstrapAddr: string,
bootstrapEnrs: var seq[enr.Record]) =
@ -55,8 +64,8 @@ proc addBootstrapNode*(bootstrapAddr: string,
return
let enrRes = parseBootstrapAddress(bootstrapAddr)
if enrRes.isOk:
bootstrapEnrs.add enrRes.value
if enrRes.isOk():
bootstrapEnrs.add(enrRes.value)
else:
warn "Ignoring invalid bootstrap address",
bootstrapAddr, reason = enrRes.error
@ -64,7 +73,7 @@ proc addBootstrapNode*(bootstrapAddr: string,
proc isWakuNode(node: Node): bool =
let wakuField = node.record.tryGet(WAKU_ENR_FIELD, uint8)
if wakuField.isSome:
if wakuField.isSome():
return wakuField.get().WakuEnrBitfield != 0x00 # True if any flag set to true
return false
@ -92,7 +101,7 @@ proc findRandomPeers*(wakuDiscv5: WakuDiscoveryV5): Future[Result[seq[RemotePeer
if res.isOk():
discoveredPeers.add(res.get())
else:
error "Failed to convert ENR to peer info", enr= $node.record, err=res.error()
error "Failed to convert ENR to peer info", enr= $node.record, err=res.error
waku_discv5_errors.inc(labelValues = ["peer_info_failure"])
@ -161,7 +170,7 @@ proc new*(T: type WakuDiscoveryV5,
)
proc open*(wakuDiscv5: WakuDiscoveryV5) {.raises: [Defect, CatchableError].} =
proc open*(wakuDiscv5: WakuDiscoveryV5) {.raises: [CatchableError].} =
debug "Opening Waku discovery v5 ports"
wakuDiscv5.protocol.open()