fix/message-notification-descriptive (#327)

* moved

* added docs

* Update message_notifier.nim

* Update waku_types.nim
This commit is contained in:
Dean Eigenmann 2021-01-04 12:57:26 +01:00 committed by GitHub
parent 8203f30099
commit 3242b0020b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 5 deletions

View File

@ -3,11 +3,26 @@ import
chronos,
../waku_types
# The Message Notification system is a method to notify various protocols
# running on a node when a new message was received.
## The Message Notification system is a method to notify various protocols
## running on a node when a new message was received.
#
# Protocols can subscribe to messages of specific topics, then when one is received
# The notification handler function will be called.
## Protocols can subscribe to messages of specific topics, then when one is received
## The notification handler function will be called.
##
## This works as follows:
##
## .. code-block::
## var topic = "foo"
##
## proc handle(topic: string, msg: WakuMessage) {.async.} =
## info "new message", msg = msg
##
## MessageNotificationSubscription.init(@[topic], handle)
##
## var subscriptions = newTable[string, MessageNotificationSubscription]()
## subscriptions["identifier"] = subscription
##
## await subscriptions.notify(topic, WakuMessage(payload: @[byte 1, 2, 3], contentTopic: ContentTopic(1)))
proc subscribe*(subscriptions: MessageNotificationSubscriptions, name: string, subscription: MessageNotificationSubscription) =
subscriptions.add(name, subscription)

View File

@ -38,11 +38,13 @@ type
MessageNotificationHandler* = proc(topic: string, msg: WakuMessage): Future[
void] {.gcsafe, closure.}
MessageNotificationSubscriptions* = TableRef[string, MessageNotificationSubscription]
MessageNotificationSubscriptionIdentifier* = string
MessageNotificationSubscription* = object
topics*: seq[string] # @TODO TOPIC
handler*: MessageNotificationHandler
MessageNotificationSubscriptions* = TableRef[MessageNotificationSubscriptionIdentifier, MessageNotificationSubscription]
FilterRequest* = object
contentFilters*: seq[ContentFilter]