mirror of
https://github.com/logos-messaging/logos-delivery.git
synced 2026-06-04 13:09:32 +00:00
30 lines
868 B
Nim
30 lines
868 B
Nim
import results, chronos
|
|
import ./node/waku_node, ./node/delivery_service/[recv_service, send_service]
|
|
|
|
type MessagingClient* = ref object
|
|
sendService*: SendService
|
|
recvService*: RecvService
|
|
started: bool
|
|
|
|
proc new*(
|
|
T: type MessagingClient, useP2PReliability: bool, node: WakuNode
|
|
): Result[T, string] =
|
|
let sendService = ?SendService.new(useP2PReliability, node)
|
|
let recvService = RecvService.new(node)
|
|
ok(T(sendService: sendService, recvService: recvService))
|
|
|
|
proc start*(self: MessagingClient): Result[void, string] =
|
|
if self.started:
|
|
return ok()
|
|
self.recvService.startRecvService()
|
|
self.sendService.startSendService()
|
|
self.started = true
|
|
ok()
|
|
|
|
proc stop*(self: MessagingClient) {.async.} =
|
|
if not self.started:
|
|
return
|
|
await self.sendService.stopSendService()
|
|
await self.recvService.stopRecvService()
|
|
self.started = false
|