mirror of
https://github.com/logos-messaging/logos-delivery.git
synced 2026-03-09 18:43:44 +00:00
* Introduce api/send Added events and requests for support. Reworked delivery_monitor into a featured devlivery_service, that - supports relay publish and lightpush depending on configuration but with fallback options - if available and configured it utilizes store api to confirm message delivery - emits message delivery events accordingly prepare for use in api_example * Fix edge mode config and test added * Fix some import issues, start and stop waku shall not throw exception but return with result properly * Utlize sync RequestBroker, adapt to non-async broker usage and gcsafe where appropriate, removed leftover * add api_example app to examples2 * Adapt after merge from master * Adapt code for using broker context * Fix brokerCtx settings for all usedbrokers, cover locked node init * Various fixes upon test failures. Added initial of subscribe API and auto-subscribe for send api * More test added * Fix multi propagate event emit, fix fail send test case * Fix rebase * Fix PushMessageHandlers in tests * adapt libwaku to api changes * Fix relay test by adapting publish return error in case NoPeersToPublish * Addressing all remaining review findings. Removed leftovers. Fixed loggings and typos * Fix rln relay broker, missed brokerCtx * Fix rest relay test failed, due to publish will fail if no peer avail * ignore anvil test state file * Make terst_wakunode_rln_relay broker context aware to fix * Fix waku rln tests by having them broker context aware * fix typo in test_app.nim
47 lines
1.3 KiB
Nim
47 lines
1.3 KiB
Nim
## This module helps to ensure the correct transmission and reception of messages
|
|
|
|
import results
|
|
import chronos
|
|
import
|
|
./recv_service,
|
|
./send_service,
|
|
./subscription_service,
|
|
waku/[
|
|
waku_core,
|
|
waku_node,
|
|
waku_store/client,
|
|
waku_relay/protocol,
|
|
waku_lightpush/client,
|
|
waku_filter_v2/client,
|
|
]
|
|
|
|
type DeliveryService* = ref object
|
|
sendService*: SendService
|
|
recvService: RecvService
|
|
subscriptionService*: SubscriptionService
|
|
|
|
proc new*(
|
|
T: type DeliveryService, useP2PReliability: bool, w: WakuNode
|
|
): Result[T, string] =
|
|
## storeClient is needed to give store visitility to DeliveryService
|
|
## wakuRelay and wakuLightpushClient are needed to give a mechanism to SendService to re-publish
|
|
let subscriptionService = SubscriptionService.new(w)
|
|
let sendService = ?SendService.new(useP2PReliability, w, subscriptionService)
|
|
let recvService = RecvService.new(w, subscriptionService)
|
|
|
|
return ok(
|
|
DeliveryService(
|
|
sendService: sendService,
|
|
recvService: recvService,
|
|
subscriptionService: subscriptionService,
|
|
)
|
|
)
|
|
|
|
proc startDeliveryService*(self: DeliveryService) =
|
|
self.sendService.startSendService()
|
|
self.recvService.startRecvService()
|
|
|
|
proc stopDeliveryService*(self: DeliveryService) {.async.} =
|
|
self.sendService.stopSendService()
|
|
await self.recvService.stopRecvService()
|