mirror of
https://github.com/logos-messaging/logos-delivery.git
synced 2026-08-03 18:33:15 +00:00
* Rename WakuMode to LogosDeliveryMode, add Fleet mode
* KernelConf (which starts only kernel) is now a distinct WakuNodeConf (starts messaging, for tests)
* Add LogosDelivery.new(kernelConf) (kernel-only)
* Add LogosDelivery.new(kernelConf, messagingOverrides, channelsOverrides) (full stack)
* LogosDeliveryConf.messagingOverrides/channelsOverrides are Option and mount each layer if present
* Add kernel-only LogosDeliveryConf.init(kernelConf)
* Parse {"mode": "fleet", "kernelConf": {...}} in parseLogosDeliveryConf
* Generalize parseOverrides to parse over caller-supplied defaults
* Add requireMessaging/requireChannels FFI guards and apply them
* Make start/stop skip layers that were not mounted (no config)
* Rename toKernelConf to toWakuNodeConf
* Add tests to test_conf.nim
* Misc additions/refactors
40 lines
1.1 KiB
Nim
40 lines
1.1 KiB
Nim
{.push raises: [].}
|
|
|
|
import std/options
|
|
import results
|
|
|
|
import logos_delivery/api/messaging_conf
|
|
import logos_delivery/channels/reliable_channel_manager
|
|
|
|
export options, messaging_conf, reliable_channel_manager
|
|
|
|
type LogosDeliveryConf* = object
|
|
## Aggregates the per-layer config objects. A layer is mounted iff its config
|
|
## is present.
|
|
kernelConf*: KernelConf
|
|
messagingConf*: Option[MessagingClientConf]
|
|
channelsConf*: Option[ReliableChannelManagerConf]
|
|
|
|
proc init*(T: type LogosDeliveryConf, kernelConf: KernelConf): LogosDeliveryConf =
|
|
return LogosDeliveryConf(kernelConf: kernelConf)
|
|
|
|
proc init*(
|
|
T: type LogosDeliveryConf,
|
|
mode: LogosDeliveryMode,
|
|
preset: string,
|
|
messagingOverrides: MessagingClientConf,
|
|
channelsOverrides: ReliableChannelManagerConf,
|
|
): ConfResult[LogosDeliveryConf] =
|
|
let merged = merge(?resolvePreset(preset), messagingOverrides)
|
|
var kernelConf = ?toWakuNodeConf(merged, mode)
|
|
kernelConf.preset = preset
|
|
return ok(
|
|
LogosDeliveryConf(
|
|
kernelConf: KernelConf(kernelConf),
|
|
messagingConf: some(merged),
|
|
channelsConf: some(channelsOverrides),
|
|
)
|
|
)
|
|
|
|
{.pop.}
|