mirror of
https://github.com/logos-messaging/logos-messaging-nim.git
synced 2026-06-29 13:00:06 +00:00
Reverses the earlier dedup-by-re-export: event TYPE definitions now live in the
interface classes, and the emptied decomposed event files are removed.
- MessageSeenEvent -> logos_delivery/api/kernel_api.nim
- Message{Sent,Error,Propagated,Received}Event -> api/messaging_client_api.nim
- ChannelMessage{Received,Sent,Error}Event -> api/reliable_channel_manager_api.nim
- EventConnectionStatusChange -> api/logos_delivery_api.nim
Deleted (became empty after the move):
- logos_delivery/waku/api/events/message_events.nim
- logos_delivery/messaging/api/events.nim
- logos_delivery/channels/api/events.nim
health_events.nim keeps its two remaining events (content/shard topic health).
Rewiring: each layer re-exports its interface module (waku->kernel_api,
messaging_client->messaging_client_api, reliable_channel->reliable_channel_manager_api,
which also re-exports messaging_client_api). Deep emitters/listeners
(subscription_manager, waku_node, waku_node/relay, node_health_monitor,
recv_service, send_service) import the owning interface module directly.
kernel_api stays below node level (types/topics/message/store-common) so the
node->kernel_api imports are acyclic. liblogosdelivery builds.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
34 lines
1.1 KiB
Nim
34 lines
1.1 KiB
Nim
## `LogosDelivery` is the project entry point. It is a pure concentrator: it
|
|
## owns exactly one instance of each API layer
|
|
##
|
|
## Waku <- MessagingClient <- ReliableChannelManager
|
|
##
|
|
## and chains them together (each layer drives the one below it). Every layer
|
|
## keeps its own, separate public API — `LogosDelivery` only wires them up and
|
|
## drives the shared `new` / `start` / `stop` lifecycle.
|
|
|
|
{.push raises: [].}
|
|
|
|
import results, chronos
|
|
import brokers/event_broker
|
|
import types as api_types
|
|
|
|
export api_types, event_broker
|
|
|
|
type
|
|
## Entry point. Holds one instance of each API layer.
|
|
ILogosDelivery* = ref object of RootObj
|
|
|
|
EventBroker:
|
|
type EventConnectionStatusChange* = object
|
|
connectionStatus*: ConnectionStatus
|
|
|
|
method start*(self: ILogosDelivery): Future[Result[void, string]] {.async, base.} =
|
|
return err("ILogosDelivery.start not implemented")
|
|
|
|
method stop*(self: ILogosDelivery): Future[Result[void, string]] {.async, base.} =
|
|
return err("ILogosDelivery.stop not implemented")
|
|
|
|
method isOnline*(self: ILogosDelivery): Future[Result[bool, string]] {.async, base.} =
|
|
return err("ILogosDelivery.isOnline not implemented")
|