From 0050f9da59a129bfab34c5eaaa03f864afd01034 Mon Sep 17 00:00:00 2001 From: Hanno Cornelius <68783915+jm-clius@users.noreply.github.com> Date: Wed, 17 Mar 2021 11:49:06 +0200 Subject: [PATCH] Add hook on newly added envelope (#423) --- waku/v1/protocol/waku_protocol.nim | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/waku/v1/protocol/waku_protocol.nim b/waku/v1/protocol/waku_protocol.nim index f96beef7e..20e14ddfc 100644 --- a/waku/v1/protocol/waku_protocol.nim +++ b/waku/v1/protocol/waku_protocol.nim @@ -87,11 +87,14 @@ type P2PRequestHandler* = proc(peer: Peer, envelope: Envelope) {.gcsafe.} + EnvReceivedHandler* = proc(envelope: Envelope) {.gcsafe.} + WakuNetwork = ref object queue*: ref Queue filters*: Filters config*: WakuConfig p2pRequestHandler*: P2PRequestHandler + envReceivedHandler*: EnvReceivedHandler RateLimits* = object # TODO: uint or specifically uint32? @@ -321,6 +324,9 @@ p2pProtocol Waku(version = wakuVersion, if peer.networkState.queue[].add(msg): # notify filters of this message peer.networkState.filters.notify(msg) + # trigger handler on received envelope, if registered + if not peer.networkState.envReceivedHandler.isNil(): + peer.networkState.envReceivedHandler(envelope) nextID 22 @@ -645,6 +651,10 @@ proc registerP2PRequestHandler*(node: EthereumNode, customHandler: P2PRequestHandler) = node.protocolState(Waku).p2pRequestHandler = customHandler +proc registerEnvReceivedHandler*(node: EthereumNode, + customHandler: EnvReceivedHandler) = + node.protocolState(Waku).envReceivedHandler = customHandler + proc resetMessageQueue*(node: EthereumNode) = ## Full reset of the message queue. ##