mirror of
https://github.com/logos-messaging/logos-messaging-nim.git
synced 2026-07-31 20:43:12 +00:00
26 lines
1.0 KiB
Nim
26 lines
1.0 KiB
Nim
import chronos, results
|
|
import brokers/[request_broker, broker_context]
|
|
import logos_delivery/api/types as api_types
|
|
|
|
export api_types, request_broker, broker_context
|
|
|
|
# Structural API contract for a messaging client (ops in `messaging/api/*`).
|
|
type MessagingApi* = concept c
|
|
subscribe(c, contentTopic = ContentTopic) is Future[Result[void, string]]
|
|
unsubscribe(c, contentTopic = ContentTopic) is Result[void, string]
|
|
send(c, envelope = MessageEnvelope) is Future[Result[RequestId, string]]
|
|
|
|
# Semi detached MessagingClient send interface.
|
|
# Can be used without MessagingClient, under the same context of MessagingClient instance.
|
|
RequestBroker:
|
|
proc MessagingSend(
|
|
envelope: MessageEnvelope
|
|
): Future[Result[RequestId, string]] {.async.}
|
|
|
|
# Semi detached MessagingClient subscription interface, same pattern as MessagingSend.
|
|
RequestBroker(sync):
|
|
proc MessagingSubscribe(contentTopic: ContentTopic): Result[void, string]
|
|
|
|
RequestBroker(sync):
|
|
proc MessagingUnsubscribe(contentTopic: ContentTopic): Result[void, string]
|