Minor bridge improvements (#563)

This commit is contained in:
Hanno Cornelius 2021-05-24 13:19:33 +02:00 committed by GitHub
parent 6e742433be
commit e0d8d8f468
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 8 deletions

View File

@ -172,7 +172,9 @@ proc start*(cmb: Chat2MatterBridge) {.async.} =
debug "Start listening on Waku v2" debug "Start listening on Waku v2"
await cmb.nodev2.start() await cmb.nodev2.start()
cmb.nodev2.mountRelay() # Always mount relay for bridge # Always mount relay for bridge
# `triggerSelf` is false on a `bridge` to avoid duplicates
cmb.nodev2.mountRelay(triggerSelf = false)
# Bridging # Bridging
# Handle messages on Waku v2 and bridge to Matterbridge # Handle messages on Waku v2 and bridge to Matterbridge

View File

@ -65,27 +65,27 @@ func toWakuMessage(env: Envelope): WakuMessage =
proc toWakuV2(bridge: WakuBridge, env: Envelope) {.async.} = proc toWakuV2(bridge: WakuBridge, env: Envelope) {.async.} =
let msg = env.toWakuMessage() let msg = env.toWakuMessage()
debug "message converted to V2", msg=msg
if bridge.seen.containsOrAdd(msg.encode().buffer.hash()): if bridge.seen.containsOrAdd(msg.encode().buffer.hash()):
# This is a duplicate message. Return # This is a duplicate message. Return
trace "Already seen. Dropping.", msg=msg trace "Already seen. Dropping.", msg=msg
waku_bridge_dropped.inc(labelValues = ["duplicate"]) waku_bridge_dropped.inc(labelValues = ["duplicate"])
return return
trace "Sending message to V2", msg=msg
waku_bridge_transfers.inc(labelValues = ["v1_to_v2"]) waku_bridge_transfers.inc(labelValues = ["v1_to_v2"])
await bridge.nodev2.publish(DefaultBridgeTopic, msg) await bridge.nodev2.publish(DefaultBridgeTopic, msg)
proc toWakuV1(bridge: WakuBridge, msg: WakuMessage) {.gcsafe.} = proc toWakuV1(bridge: WakuBridge, msg: WakuMessage) {.gcsafe.} =
debug "sending message to V1", msg=msg
if bridge.seen.containsOrAdd(msg.encode().buffer.hash()): if bridge.seen.containsOrAdd(msg.encode().buffer.hash()):
# This is a duplicate message. Return # This is a duplicate message. Return
trace "Already seen. Dropping.", msg=msg trace "Already seen. Dropping.", msg=msg
waku_bridge_dropped.inc(labelValues = ["duplicate"]) waku_bridge_dropped.inc(labelValues = ["duplicate"])
return return
trace "Sending message to V1", msg=msg
waku_bridge_transfers.inc(labelValues = ["v2_to_v1"]) waku_bridge_transfers.inc(labelValues = ["v2_to_v1"])
# @TODO: use namespacing to map v2 contentTopics to v1 topics # @TODO: use namespacing to map v2 contentTopics to v1 topics
@ -154,7 +154,9 @@ proc start*(bridge: WakuBridge) {.async.} =
debug "Start listening on Waku v2" debug "Start listening on Waku v2"
await bridge.nodev2.start() await bridge.nodev2.start()
bridge.nodev2.mountRelay() # Always mount relay for bridge # Always mount relay for bridge.
# `triggerSelf` is false on a `bridge` to avoid duplicates
bridge.nodev2.mountRelay(triggerSelf = false)
# Bridging # Bridging
# Handle messages on Waku v1 and bridge to Waku v2 # Handle messages on Waku v1 and bridge to Waku v2

View File

@ -441,12 +441,13 @@ proc mountRelay*(node: WakuNode,
topics: seq[string] = newSeq[string](), topics: seq[string] = newSeq[string](),
rlnRelayEnabled = false, rlnRelayEnabled = false,
keepAlive = false, keepAlive = false,
relayMessages = true) {.gcsafe.} = relayMessages = true,
triggerSelf = true) {.gcsafe.} =
let wakuRelay = WakuRelay.init( let wakuRelay = WakuRelay.init(
switch = node.switch, switch = node.switch,
# Use default # Use default
#msgIdProvider = msgIdProvider, #msgIdProvider = msgIdProvider,
triggerSelf = true, triggerSelf = triggerSelf,
sign = false, sign = false,
verifySignature = false verifySignature = false
) )