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>
50 lines
1.5 KiB
Nim
50 lines
1.5 KiB
Nim
import chronos, results
|
|
import brokers/event_broker
|
|
|
|
import logos_delivery/api/types as api_types
|
|
import logos_delivery/waku/waku_core/message
|
|
|
|
export event_broker, api_types
|
|
|
|
type IMessagingClient* = ref object of RootObj
|
|
|
|
EventBroker:
|
|
# Event emitted when a message is sent to the network
|
|
type MessageSentEvent* = object
|
|
requestId*: RequestId
|
|
messageHash*: string
|
|
|
|
EventBroker:
|
|
# Event emitted when a message send operation fails
|
|
type MessageErrorEvent* = object
|
|
requestId*: RequestId
|
|
messageHash*: string
|
|
error*: string
|
|
|
|
EventBroker:
|
|
# Confirmation that a message has been correctly delivered to some neighbouring nodes.
|
|
type MessagePropagatedEvent* = object
|
|
requestId*: RequestId
|
|
messageHash*: string
|
|
|
|
EventBroker:
|
|
# Event emitted when a message is received via Waku
|
|
type MessageReceivedEvent* = object
|
|
messageHash*: string
|
|
message*: WakuMessage
|
|
|
|
method subscribe*(
|
|
self: IMessagingClient, contentTopic: ContentTopic
|
|
): Future[Result[void, string]] {.async: (raises: []), base.} =
|
|
return err("Interface IMessagingClient.subscribe not implemented")
|
|
|
|
method unsubscribe*(
|
|
self: IMessagingClient, contentTopic: ContentTopic
|
|
): Result[void, string] {.base, raises: [].} =
|
|
return err("Interface IMessagingClient.unsubscribe not implemented")
|
|
|
|
method send*(
|
|
self: IMessagingClient, envelope: MessageEnvelope
|
|
): Future[Result[RequestId, string]] {.async: (raises: []), base.} =
|
|
return err("Interface IMessagingClient.send not implemented")
|