refactor(waku topic): Manage `pubsub` & `content` topics better

This commit is contained in:
Emil Ivanichkov 2024-04-18 19:06:56 +03:00 committed by Emil Ivanichkov
parent bbb65ccd72
commit 3082718fce
5 changed files with 23 additions and 5 deletions

View File

@ -18,6 +18,7 @@ import
type WakuPairResult* = object
wakuNode*: WakuNode
wakuHandshakeResult*: HandshakeResult
contentTopic*: string
proc wakuPair*(rng: ref HmacDrbgContext,
node: WakuNode,
@ -46,4 +47,5 @@ proc wakuPair*(rng: ref HmacDrbgContext,
qrMessageNameTag,
initiatorInfo)
return WakuPairResult(wakuNode: node,
wakuHandshakeResult: initiatorHSResult)
wakuHandshakeResult: initiatorHSResult,
contentTopic: contentTopic)

View File

@ -93,10 +93,15 @@ proc doRunStatusNodeManager*(config: StatusNodeManagerConfig,
proc doWakuPairing(config: StatusNodeManagerConfig,
rng: ref HmacDrbgContext,
wakuClient: var RestClientRef) =
let pubsubTopic = if config.pubsubTopic.isSome:
config.pubsubTopic.get
else:
defaultWakuPubsubTopic
let wakuPairRequestData = WakuPairRequestData(
qr: config.qr,
qrMessageNameTag: config.qrMessageNameTag,
pubSubTopic: config.pubSubTopic
pubSubTopic: pubSubTopic
)
waitFor wakuPair(wakuClient, wakuPairRequestData)

View File

@ -13,6 +13,8 @@ export
parseCmdArg, completeCmdArg, `/`
const wakuHandshakeDataFilename* = "handshake_data.json"
const defaultWakuContentTopic* = "/snm/0.0.1/default/proto"
const defaultWakuPubsubTopic* = "/waku/2/default-waku/proto"
type
SNMStartUpCmd* {.pure.} = enum
@ -106,8 +108,7 @@ type
pubSubTopic* {.
desc: "The topic to subscribe to"
defaultValue: "/waku/2/default-waku/proto"
name: "pubsub-topic" .}: PubsubTopic
name: "pubsub-topic" .}: Option[PubsubTopic]
of WakuCommand.exportHandshake:
handshakeFile* {.

View File

@ -54,6 +54,11 @@ proc installWakuApiHandlers*(router: var RestRouter,
wakuHost.wakuNode = wakuPairResult.wakuNode
wakuHost.wakuHandshake = wakuPairResult.wakuHandshakeResult
wakuHost.pubSubTopic = wakuPairData.pubSubTopic
wakuHost.contentTopic = wakuPairResult.contentTopic
notice "After pairing pubSubTopic updated: ", pubSubTopic = wakuHost.pubSubTopic
notice "After pairing contentTopic updated: ", contentTopic = wakuHost.contentTopic
notice "Waku pairing successful! Request fulfilled."
return RestApiResponse.response("Successful pairing", Http200, "application/json")

View File

@ -15,6 +15,7 @@ import
# Nimble packages - Waku
waku/node/waku_node,
waku/waku_core,
waku/waku_noise/noise_types,
# Local modules
@ -30,6 +31,8 @@ type
rng*: ref HmacDrbgContext
wakuNode*: WakuNode
wakuHandshake*: HandshakeResult
pubsubTopic*: PubsubTopic
contentTopic*: string
proc saveHandshakeData*(handshakeResult: HandshakeResult,
handshakeDataFile: OutFile): Result[OutFile, string] =
@ -111,5 +114,7 @@ proc init*(T: type WakuHost,
T(rng: rng,
wakuNode: node,
wakuHandshake: wakuHandshake
wakuHandshake: wakuHandshake,
contentTopic: defaultWakuContentTopic,
pubsubTopic: defaultWakuPubsubTopic
)