mirror of
https://github.com/waku-org/nwaku.git
synced 2025-02-05 11:34:45 +00:00
bab0e12d68
* Waku v2: Update docs and API with current state - Publish and subscribe implemented - Three protocol split * Update docs/api/v2/node.md Co-authored-by: Kim De Mey <kim.demey@gmail.com> * Update waku/node/v2/wakunode2.nim Co-authored-by: Kim De Mey <kim.demey@gmail.com> Co-authored-by: Kim De Mey <kim.demey@gmail.com>
2.5 KiB
2.5 KiB
Waku APIs
Nim API
The Nim Waku API consist of five methods. Some of them have different arity depending on what privacy/bandwidth trade-off the consumer wants to make. These five method are:
- Init - create and start a node.
- Subscribe - to a topic or a specific content filter.
- Unsubscribe - to a topic or a specific content filter.
- Publish - to a topic, or a topic and a specific content filter.
- Query - for historical messages.
proc init*(T: type WakuNode, conf: WakuNodeConf): Future[T]
## Creates and starts a Waku node.
##
## Status: Implemented.
method subscribe*(w: WakuNode, topic: Topic, handler: TopicHandler)
## Subscribes to a PubSub topic. Triggers handler when receiving messages on
## this topic. TopicHandler is a method that takes a topic and some data.
##
## NOTE The data field SHOULD be decoded as a WakuMessage.
## Status: Implemented.
method subscribe*(w: WakuNode, contentFilter: ContentFilter, handler: ContentFilterHandler)
## Subscribes to a ContentFilter. Triggers handler when receiving messages on
## this content filter. ContentFilter is a method that takes some content
## filter, specifically with `ContentTopic`, and a `Message`. The `Message`
## has to match the `ContentTopic`.
## Status: Not yet implemented.
## TODO Implement as wrapper around `waku_filter` and `subscribe` above.
method unsubscribe*(w: WakuNode, topic: Topic)
## Unsubscribe from a topic.
##
## Status: Not yet implemented.
## TODO Implement.
method unsubscribe*(w: WakuNode, contentFilter: ContentFilter)
## Unsubscribe from a content filter.
##
## Status: Not yet implemented.
## TODO Implement.
method publish*(w: WakuNode, topic: Topic, message: Message)
## Publish a `Message` to a PubSub topic.
##
## Status: Partially implemented.
## TODO WakuMessage OR seq[byte]. NOT PubSub Message.
method publish*(w: WakuNode, topic: Topic, contentFilter: ContentFilter, message: Message)
## Publish a `Message` to a PubSub topic with a specific content filter.
## Currently this means a `contentTopic`.
##
## Status: Not yet implemented.
## TODO Implement as wrapper around `waku_relay` and `publish`.
## TODO WakuMessage. Ensure content filter is in it.
method query*(w: WakuNode, query: HistoryQuery): HistoryResponse
## Queries for historical messages.
##
## Status: Not yet implemented.
## TODO Implement as wrapper around `waku_store` and send RPC.