From e0f2ab8de16f6f2b9525aeacd240bc401dc7fea5 Mon Sep 17 00:00:00 2001 From: decanus <7621705+decanus@users.noreply.github.com> Date: Tue, 21 Jul 2020 16:40:50 +0200 Subject: [PATCH 01/11] simplified filter --- waku/protocol/v2/waku_protocol2.nim | 3 +++ 1 file changed, 3 insertions(+) diff --git a/waku/protocol/v2/waku_protocol2.nim b/waku/protocol/v2/waku_protocol2.nim index bd9096c410..054718824f 100644 --- a/waku/protocol/v2/waku_protocol2.nim +++ b/waku/protocol/v2/waku_protocol2.nim @@ -28,6 +28,8 @@ type text*: string gossip_enabled*: bool + filters: Filters + method init(w: WakuSub) = debug "init" proc handler(conn: Connection, proto: string) {.async.} = @@ -81,6 +83,7 @@ method subscribeTopic*(w: WakuSub, peerId: string) {.async, gcsafe.} = proc handler(topic: string, data: seq[byte]) {.async, gcsafe.} = info "Hit NOOP handler", topic + w.filters.notify(topic, data) debug "subscribeTopic", topic=topic, subscribe=subscribe, peerId=peerId From 9078a9a8f16c85a167e9cf09e7113b6f22ba3826 Mon Sep 17 00:00:00 2001 From: decanus <7621705+decanus@users.noreply.github.com> Date: Tue, 21 Jul 2020 16:42:52 +0200 Subject: [PATCH 02/11] add filter --- waku/protocol/v2/filter.nim | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 waku/protocol/v2/filter.nim diff --git a/waku/protocol/v2/filter.nim b/waku/protocol/v2/filter.nim new file mode 100644 index 0000000000..cd64886c05 --- /dev/null +++ b/waku/protocol/v2/filter.nim @@ -0,0 +1,25 @@ +import + tables + +type + + FilterMessageHandler* = proc(msg: Data) {.gcsafe, closure.} + + Filter* = object + topics: seq[string] # @TODO TOPIC + handler: FilterMessageHandler + + Filters* = Table[string, Filter] + +proc init*(T: type Filter, topics: seq[string], handler: FilterMessageHandler): T = + result = T( + topics: topics, + handler: handler + ) + +proc notify*(filters: var Filters, topic: string, msg: seq[byte]) {.gcsafe.} = + for filter in filters.mvalues: + if filter.topics.len > 0 && topic notin filter.topics: + continue + + filter.handler(msg) \ No newline at end of file From 05c7df5299645a1cd05b5241f3f1c45f9fa2feeb Mon Sep 17 00:00:00 2001 From: decanus <7621705+decanus@users.noreply.github.com> Date: Tue, 21 Jul 2020 17:02:09 +0200 Subject: [PATCH 03/11] eol --- waku/protocol/v2/filter.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/waku/protocol/v2/filter.nim b/waku/protocol/v2/filter.nim index cd64886c05..2f0187983c 100644 --- a/waku/protocol/v2/filter.nim +++ b/waku/protocol/v2/filter.nim @@ -22,4 +22,4 @@ proc notify*(filters: var Filters, topic: string, msg: seq[byte]) {.gcsafe.} = if filter.topics.len > 0 && topic notin filter.topics: continue - filter.handler(msg) \ No newline at end of file + filter.handler(msg) From a03311acd065aecbb289ea2f66da4d6aaafcf88f Mon Sep 17 00:00:00 2001 From: Dean Eigenmann <7621705+decanus@users.noreply.github.com> Date: Wed, 22 Jul 2020 13:18:04 +0200 Subject: [PATCH 04/11] Update waku_protocol2.nim --- waku/protocol/v2/waku_protocol2.nim | 1 + 1 file changed, 1 insertion(+) diff --git a/waku/protocol/v2/waku_protocol2.nim b/waku/protocol/v2/waku_protocol2.nim index 054718824f..5b1e1e5480 100644 --- a/waku/protocol/v2/waku_protocol2.nim +++ b/waku/protocol/v2/waku_protocol2.nim @@ -5,6 +5,7 @@ import strutils import chronos, chronicles +import ./filters import libp2p/protocols/pubsub/pubsub, libp2p/protocols/pubsub/pubsubpeer, libp2p/protocols/pubsub/floodsub, From 330e40b294362d67afba7cb228695aa1161acb50 Mon Sep 17 00:00:00 2001 From: decanus <7621705+decanus@users.noreply.github.com> Date: Wed, 22 Jul 2020 14:28:57 +0200 Subject: [PATCH 05/11] trigger GitHub actions From 9f9ba080ff253fa174b117d4335b8b862d1aff08 Mon Sep 17 00:00:00 2001 From: decanus <7621705+decanus@users.noreply.github.com> Date: Wed, 22 Jul 2020 14:41:55 +0200 Subject: [PATCH 06/11] comment --- waku/protocol/v2/waku_protocol2.nim | 3 +++ 1 file changed, 3 insertions(+) diff --git a/waku/protocol/v2/waku_protocol2.nim b/waku/protocol/v2/waku_protocol2.nim index 5b1e1e5480..9ac3e00715 100644 --- a/waku/protocol/v2/waku_protocol2.nim +++ b/waku/protocol/v2/waku_protocol2.nim @@ -84,6 +84,9 @@ method subscribeTopic*(w: WakuSub, peerId: string) {.async, gcsafe.} = proc handler(topic: string, data: seq[byte]) {.async, gcsafe.} = info "Hit NOOP handler", topic + + # Currently we are using the libp2p topic here. + # This will need to be change to a Waku topic. w.filters.notify(topic, data) debug "subscribeTopic", topic=topic, subscribe=subscribe, peerId=peerId From 355201ccc5cfd2634d1e5e3ff125c8155102c7f3 Mon Sep 17 00:00:00 2001 From: decanus <7621705+decanus@users.noreply.github.com> Date: Wed, 22 Jul 2020 16:38:13 +0200 Subject: [PATCH 07/11] fix import --- waku/protocol/v2/waku_protocol2.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/waku/protocol/v2/waku_protocol2.nim b/waku/protocol/v2/waku_protocol2.nim index 9ac3e00715..c84cb98d47 100644 --- a/waku/protocol/v2/waku_protocol2.nim +++ b/waku/protocol/v2/waku_protocol2.nim @@ -5,7 +5,7 @@ import strutils import chronos, chronicles -import ./filters +import ./filter import libp2p/protocols/pubsub/pubsub, libp2p/protocols/pubsub/pubsubpeer, libp2p/protocols/pubsub/floodsub, From eb8892ea7c31d0f6db9253105d363b5459331ee1 Mon Sep 17 00:00:00 2001 From: decanus <7621705+decanus@users.noreply.github.com> Date: Wed, 22 Jul 2020 16:43:05 +0200 Subject: [PATCH 08/11] oops --- waku/protocol/v2/filter.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/waku/protocol/v2/filter.nim b/waku/protocol/v2/filter.nim index 2f0187983c..c5fd1d2f20 100644 --- a/waku/protocol/v2/filter.nim +++ b/waku/protocol/v2/filter.nim @@ -3,7 +3,7 @@ import type - FilterMessageHandler* = proc(msg: Data) {.gcsafe, closure.} + FilterMessageHandler* = proc(msg: seq[byte]) {.gcsafe, closure.} Filter* = object topics: seq[string] # @TODO TOPIC From 3a72b6249df30a8de68182b2fc0913220e287c1c Mon Sep 17 00:00:00 2001 From: decanus <7621705+decanus@users.noreply.github.com> Date: Wed, 22 Jul 2020 16:43:52 +0200 Subject: [PATCH 09/11] and --- waku/protocol/v2/filter.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/waku/protocol/v2/filter.nim b/waku/protocol/v2/filter.nim index c5fd1d2f20..c174c4a9b4 100644 --- a/waku/protocol/v2/filter.nim +++ b/waku/protocol/v2/filter.nim @@ -19,7 +19,7 @@ proc init*(T: type Filter, topics: seq[string], handler: FilterMessageHandler): proc notify*(filters: var Filters, topic: string, msg: seq[byte]) {.gcsafe.} = for filter in filters.mvalues: - if filter.topics.len > 0 && topic notin filter.topics: + if filter.topics.len > 0 and topic notin filter.topics: continue filter.handler(msg) From 114d944d2bebba9bdc108bedbf3a8c864164e41d Mon Sep 17 00:00:00 2001 From: decanus <7621705+decanus@users.noreply.github.com> Date: Wed, 22 Jul 2020 16:48:09 +0200 Subject: [PATCH 10/11] init filters --- waku/protocol/v2/waku_protocol2.nim | 1 + 1 file changed, 1 insertion(+) diff --git a/waku/protocol/v2/waku_protocol2.nim b/waku/protocol/v2/waku_protocol2.nim index c84cb98d47..6970badbaf 100644 --- a/waku/protocol/v2/waku_protocol2.nim +++ b/waku/protocol/v2/waku_protocol2.nim @@ -47,6 +47,7 @@ method init(w: WakuSub) = # XXX: Handler hijack GossipSub here? w.handler = handler + w.filters = initTable[string, Filter]() w.codec = WakuSubCodec method initPubSub*(w: WakuSub) = From 0065cabb45e3f68aa3fe30cd6b0d779894f2fb73 Mon Sep 17 00:00:00 2001 From: decanus <7621705+decanus@users.noreply.github.com> Date: Wed, 22 Jul 2020 16:49:09 +0200 Subject: [PATCH 11/11] import tables --- waku/protocol/v2/waku_protocol2.nim | 1 + 1 file changed, 1 insertion(+) diff --git a/waku/protocol/v2/waku_protocol2.nim b/waku/protocol/v2/waku_protocol2.nim index 6970badbaf..1159391488 100644 --- a/waku/protocol/v2/waku_protocol2.nim +++ b/waku/protocol/v2/waku_protocol2.nim @@ -6,6 +6,7 @@ import strutils import chronos, chronicles import ./filter +import tables import libp2p/protocols/pubsub/pubsub, libp2p/protocols/pubsub/pubsubpeer, libp2p/protocols/pubsub/floodsub,