diff --git a/waku/node/v2/waku_types.nim b/waku/node/v2/waku_types.nim index 8feb99321..d1ee8c568 100644 --- a/waku/node/v2/waku_types.nim +++ b/waku/node/v2/waku_types.nim @@ -7,6 +7,8 @@ import chronos, libp2p/[switch, peerinfo, multiaddress, crypto/crypto], libp2p/protobuf/minprotobuf, + libp2p/protocols/protocol, + libp2p/stream/connection, libp2p/protocols/pubsub/[pubsub, floodsub, gossipsub] # Common data types ----------------------------------------------------------- @@ -41,10 +43,37 @@ type topics*: seq[string] # @TODO TOPIC handler*: MessageNotificationHandler + HistoryQuery* = object + uuid*: string + topics*: seq[string] + + HistoryResponse* = object + uuid*: string + messages*: seq[WakuMessage] + + WakuStore* = ref object of LPProtocol + messages*: seq[WakuMessage] + + FilterRequest* = object + contentFilter*: seq[ContentFilter] + topic*: string + + MessagePush* = object + messages*: seq[WakuMessage] + + Subscriber* = object + connection*: Connection + filter*: FilterRequest # @TODO MAKE THIS A SEQUENCE AGAIN? + + WakuFilter* = ref object of LPProtocol + subscribers*: seq[Subscriber] + # NOTE based on Eth2Node in NBC eth2_network.nim WakuNode* = ref object of RootObj switch*: Switch wakuRelay*: WakuRelay + wakuStore*: WakuStore + wakuFilter*: WakuFilter peerInfo*: PeerInfo libp2pTransportLoops*: seq[Future[void]] # TODO Revist messages field indexing as well as if this should be Message or WakuMessage diff --git a/waku/node/v2/wakunode2.nim b/waku/node/v2/wakunode2.nim index faf1ce9e3..85ab99e6c 100644 --- a/waku/node/v2/wakunode2.nim +++ b/waku/node/v2/wakunode2.nim @@ -29,12 +29,6 @@ type Topic* = waku_types.Topic Message* = seq[byte] - HistoryQuery* = object - topics*: seq[string] - - HistoryResponse* = object - messages*: seq[Message] - # NOTE Any difference here in Waku vs Eth2? # E.g. Devp2p/Libp2p support, etc. #func asLibp2pKey*(key: keys.PublicKey): PublicKey = @@ -108,13 +102,13 @@ proc start*(node: WakuNode) {.async.} = node.libp2pTransportLoops = await node.switch.start() # NOTE WakuRelay is being instantiated as part of initing node - let storeProto = WakuStore.init() - node.switch.mount(storeProto) - node.subscriptions.subscribe(WakuStoreCodec, storeProto.subscription()) + node.wakuStore = WakuStore.init() + node.switch.mount(node.wakuStore) + node.subscriptions.subscribe(WakuStoreCodec, node.wakuStore.subscription()) - let filterProto = WakuFilter.init() - node.switch.mount(filterProto) - node.subscriptions.subscribe(WakuFilterCodec, filterProto.subscription()) + node.wakuFilter = WakuFilter.init() + node.switch.mount(node.wakuFilter) + node.subscriptions.subscribe(WakuFilterCodec, node.wakuFilter.subscription()) proc relayHandler(topic: string, data: seq[byte]) {.async, gcsafe.} = let msg = WakuMessage.init(data) @@ -193,14 +187,10 @@ proc query*(w: WakuNode, query: HistoryQuery): HistoryResponse = ## ## Status: Not yet implemented. ## TODO Implement as wrapper around `waku_store` and send RPC. - result.messages = newSeq[Message]() - - for msg in w.messages: - if msg[0] notin query.topics: - continue - - # XXX Unclear how this should be hooked up, Message or WakuMessage? - # result.messages.insert(msg[1]) + + # XXX Unclear how this should be hooked up, Message or WakuMessage? + # result.messages.insert(msg[1]) + discard when isMainModule: import diff --git a/waku/protocol/v2/waku_filter.nim b/waku/protocol/v2/waku_filter.nim index 9e941ec3b..ca332e57d 100644 --- a/waku/protocol/v2/waku_filter.nim +++ b/waku/protocol/v2/waku_filter.nim @@ -20,24 +20,6 @@ logScope: const WakuFilterCodec* = "/vac/waku/filter/2.0.0-alpha5" -type - ContentFilter* = object - topics*: seq[string] - - FilterRequest* = object - contentFilter*: seq[ContentFilter] - topic*: string - - MessagePush* = object - messages*: seq[WakuMessage] - - Subscriber = object - connection: Connection - filter: FilterRequest # @TODO MAKE THIS A SEQUENCE AGAIN? - - WakuFilter* = ref object of LPProtocol - subscribers*: seq[Subscriber] - proc encode*(filter: ContentFilter): ProtoBuffer = result = initProtoBuffer() diff --git a/waku/protocol/v2/waku_store.nim b/waku/protocol/v2/waku_store.nim index fe131af73..35c05f635 100644 --- a/waku/protocol/v2/waku_store.nim +++ b/waku/protocol/v2/waku_store.nim @@ -13,18 +13,6 @@ logScope: const WakuStoreCodec* = "/vac/waku/store/2.0.0-alpha5" -type - HistoryQuery* = object - uuid*: string - topics*: seq[string] - - HistoryResponse* = object - uuid*: string - messages*: seq[WakuMessage] - - WakuStore* = ref object of LPProtocol - messages*: seq[WakuMessage] - proc init*(T: type HistoryQuery, buffer: seq[byte]): ProtoResult[T] = var msg = HistoryQuery() let pb = initProtoBuffer(buffer)