nwaku/docs/api/v2/node.md
Oskar Thorén 1ca3962e8d
Fix init signature according to Node API (#80)
* Fix init signature according to Node API

See https://github.com/status-im/nim-waku/blob/master/docs/api/v2/node.md

* Update docs and example
2020-07-28 16:06:00 +08:00

2.7 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:

  1. Init - create and start a node.
  2. Subscribe - to a topic or a specific content filter.
  3. Unsubscribe - to a topic or a specific content filter.
  4. Publish - to a topic, or a topic and a specific content filter.
  5. Query - for historical messages.
proc init*(conf: WakuNodeConf): Future[WakuNode]
  ## 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 a `Message`.
  ##
  ## Status: Not yet implemented.
  ## TODO Implement as wrapper around `waku_protocol`, and ensure Message is
  ## passed, not `data` field.

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_protocol` and `subscribe` above, and
  ## ensure Message is passed, not `data` field.

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: Not yet implemented.
  ## TODO Implement as wrapper around `waku_protocol`, and ensure Message is
  ## passed, not `data` field.

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_protocol` and `publish`, and ensure
  ## Message is passed, not `data` field. Also ensure content filter is in
  ## Message.

method query*(w: WakuNode, query: HistoryQuery): HistoryResponse
  ## Queries for historical messages.
  ##
  ## Status: Not yet implemented.
  ## TODO Implement as wrapper around `waku_protocol` and send `RPCMsg`.

JSON RPC

TODO To specify