mirror of
https://github.com/logos-messaging/logos-messaging-nim.git
synced 2026-06-29 13:00:06 +00:00
have events defined on their own modules
and have proper event folder
This commit is contained in:
parent
f2bbea4449
commit
8ee0b52297
@ -1,5 +1,4 @@
|
||||
import chronos, results
|
||||
import brokers/event_broker
|
||||
|
||||
import logos_delivery/api/types as api_types
|
||||
import logos_delivery/waku/waku_core/topics/pubsub_topic
|
||||
@ -7,15 +6,8 @@ import logos_delivery/waku/waku_core/message
|
||||
import logos_delivery/waku/waku_core/subscription/push_handler
|
||||
import logos_delivery/waku/waku_store/common as store_types
|
||||
|
||||
export event_broker
|
||||
export api_types, pubsub_topic, store_types
|
||||
|
||||
EventBroker:
|
||||
# Internal event emitted when a message arrives from the network via any protocol
|
||||
type MessageSeenEvent* = object
|
||||
topic*: PubsubTopic
|
||||
message*: WakuMessage
|
||||
|
||||
# Structural API contract for the Kernel surface, implemented by `Waku`
|
||||
# (ops in `waku/api/*`).
|
||||
type KernelApi* = concept w
|
||||
|
||||
@ -1,35 +1,8 @@
|
||||
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
|
||||
|
||||
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
|
||||
export api_types
|
||||
|
||||
# Structural API contract for a messaging client (ops in `messaging/api/*`).
|
||||
type MessagingApi* = concept c
|
||||
|
||||
@ -1,18 +1,9 @@
|
||||
import chronos, results
|
||||
|
||||
import brokers/event_broker
|
||||
|
||||
import logos_delivery/api/types as api_types
|
||||
import logos_delivery/channels/types as channel_types
|
||||
|
||||
# The channel layer re-uses the messaging-layer message events (the `requestId`
|
||||
# is shared across layers), so it re-exports the messaging interface's event
|
||||
# surface and only adds the channel-level events that have no lower-layer
|
||||
# analogue (reassembled payload / senderId / channelId).
|
||||
import logos_delivery/api/messaging_client_api
|
||||
|
||||
export event_broker, api_types
|
||||
export channel_types, messaging_client_api
|
||||
export api_types, channel_types
|
||||
|
||||
type SendHandler* = proc(envelope: MessageEnvelope): Future[Result[RequestId, string]] {.
|
||||
async: (raises: [CatchableError]), gcsafe
|
||||
@ -22,28 +13,6 @@ type SendHandler* = proc(envelope: MessageEnvelope): Future[Result[RequestId, st
|
||||
## `RequestId`s so the send state machine can be exercised end-to-end
|
||||
## without a network.
|
||||
|
||||
EventBroker:
|
||||
type ChannelMessageReceivedEvent* = object
|
||||
channelId*: ChannelId
|
||||
senderId*: SdsParticipantID
|
||||
payload*: seq[byte]
|
||||
|
||||
EventBroker:
|
||||
## Emitted when every segment of a channel-level `send()` reached
|
||||
## `Confirmed`. Channel-level analogue of `MessageSentEvent`; the
|
||||
## `requestId` is the channel-layer parent returned by `send()`.
|
||||
type ChannelMessageSentEvent* = object
|
||||
channelId*: ChannelId
|
||||
requestId*: RequestId
|
||||
|
||||
EventBroker:
|
||||
## Emitted when a channel-level `send()` finalises with at least one
|
||||
## segment in `Failed`. Channel-level analogue of `MessageErrorEvent`.
|
||||
type ChannelMessageErrorEvent* = object
|
||||
channelId*: ChannelId
|
||||
requestId*: RequestId
|
||||
error*: string
|
||||
|
||||
# Structural API contract for the reliable-channel surface (ops in `channels/api/*`).
|
||||
type ReliableChannelApi* = concept c
|
||||
createReliableChannel(
|
||||
|
||||
@ -23,6 +23,8 @@ import libp2p/crypto/crypto as libp2p_crypto
|
||||
|
||||
import logos_delivery/api/types
|
||||
import logos_delivery/api/reliable_channel_manager_api
|
||||
import logos_delivery/events/messaging_client_events
|
||||
import logos_delivery/events/reliable_channel_manager_events
|
||||
import logos_delivery/messaging/delivery_service/send_service
|
||||
import logos_delivery/waku/waku_core/topics
|
||||
|
||||
|
||||
12
logos_delivery/events/kernel_events.nim
Normal file
12
logos_delivery/events/kernel_events.nim
Normal file
@ -0,0 +1,12 @@
|
||||
import brokers/event_broker
|
||||
|
||||
import logos_delivery/waku/waku_core/topics/pubsub_topic
|
||||
import logos_delivery/waku/waku_core/message
|
||||
|
||||
export event_broker, pubsub_topic, message
|
||||
|
||||
EventBroker:
|
||||
# Internal event emitted when a message arrives from the network via any protocol
|
||||
type MessageSeenEvent* = object
|
||||
topic*: PubsubTopic
|
||||
message*: WakuMessage
|
||||
30
logos_delivery/events/messaging_client_events.nim
Normal file
30
logos_delivery/events/messaging_client_events.nim
Normal file
@ -0,0 +1,30 @@
|
||||
import brokers/event_broker
|
||||
|
||||
import logos_delivery/api/types as api_types
|
||||
|
||||
export event_broker, api_types
|
||||
|
||||
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
|
||||
27
logos_delivery/events/reliable_channel_manager_events.nim
Normal file
27
logos_delivery/events/reliable_channel_manager_events.nim
Normal file
@ -0,0 +1,27 @@
|
||||
import brokers/event_broker
|
||||
|
||||
import logos_delivery/channels/types as channel_types
|
||||
|
||||
export event_broker, channel_types
|
||||
|
||||
EventBroker:
|
||||
type ChannelMessageReceivedEvent* = object
|
||||
channelId*: ChannelId
|
||||
senderId*: SdsParticipantID
|
||||
payload*: seq[byte]
|
||||
|
||||
EventBroker:
|
||||
## Emitted when every segment of a channel-level `send()` reached
|
||||
## `Confirmed`. Channel-level analogue of `MessageSentEvent`; the
|
||||
## `requestId` is the channel-layer parent returned by `send()`.
|
||||
type ChannelMessageSentEvent* = object
|
||||
channelId*: ChannelId
|
||||
requestId*: RequestId
|
||||
|
||||
EventBroker:
|
||||
## Emitted when a channel-level `send()` finalises with at least one
|
||||
## segment in `Failed`. Channel-level analogue of `MessageErrorEvent`.
|
||||
type ChannelMessageErrorEvent* = object
|
||||
channelId*: ChannelId
|
||||
requestId*: RequestId
|
||||
error*: string
|
||||
@ -28,8 +28,9 @@ import
|
||||
export
|
||||
topics, relay, subscriptions, filter, lightpush, store, peer_manager, discovery,
|
||||
debug, health, ping
|
||||
# `MessageSeenEvent` is surfaced via `export waku` (Kernel interface); the
|
||||
# remaining waku health events live here.
|
||||
# Kernel event surface (`MessageSeenEvent`) plus the remaining waku health events.
|
||||
import logos_delivery/events/kernel_events
|
||||
export kernel_events
|
||||
import logos_delivery/waku/api/events/health_events
|
||||
export health_events
|
||||
|
||||
@ -38,7 +39,8 @@ import logos_delivery/messaging/messaging_client
|
||||
export messaging_client
|
||||
import logos_delivery/messaging/api/[subscription, send]
|
||||
export subscription, send
|
||||
# Message* events are surfaced via `export messaging_client` (messaging interface).
|
||||
import logos_delivery/events/messaging_client_events
|
||||
export messaging_client_events
|
||||
|
||||
# Reliable Channel layer
|
||||
import logos_delivery/channels/reliable_channel_manager
|
||||
@ -47,7 +49,8 @@ import logos_delivery/channels/api/channel_lifecycle
|
||||
export channel_lifecycle
|
||||
import logos_delivery/channels/api/send as channel_send
|
||||
export channel_send
|
||||
# ChannelMessage* events are surfaced via `export reliable_channel_manager`.
|
||||
import logos_delivery/events/reliable_channel_manager_events
|
||||
export reliable_channel_manager_events
|
||||
|
||||
# Compile-time check that each layer's concrete type satisfies its API concept.
|
||||
static:
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
import results, chronos, chronicles
|
||||
|
||||
import logos_delivery/api/types
|
||||
import logos_delivery/events/messaging_client_events
|
||||
import logos_delivery/messaging/messaging_client
|
||||
import logos_delivery/waku/waku
|
||||
import logos_delivery/waku/api/subscriptions
|
||||
|
||||
@ -11,8 +11,8 @@ import
|
||||
logos_delivery/waku/waku,
|
||||
logos_delivery/waku/api/[store, subscriptions]
|
||||
import
|
||||
logos_delivery/api/kernel_api, # MessageSeenEvent
|
||||
logos_delivery/api/messaging_client_api, # MessageReceivedEvent
|
||||
logos_delivery/events/kernel_events, # MessageSeenEvent
|
||||
logos_delivery/events/messaging_client_events, # MessageReceivedEvent
|
||||
logos_delivery/waku/api/events/health_events # EventConnectionStatusChange
|
||||
|
||||
const MaxMessageLife = chronos.minutes(7) ## Max time we will keep track of rx messages
|
||||
|
||||
@ -10,7 +10,7 @@ import
|
||||
logos_delivery/waku/[waku_core, waku_store/common],
|
||||
logos_delivery/waku/waku,
|
||||
logos_delivery/waku/api/[store, subscriptions, publish]
|
||||
import logos_delivery/api/messaging_client_api
|
||||
import logos_delivery/events/messaging_client_events
|
||||
|
||||
logScope:
|
||||
topics = "send service"
|
||||
|
||||
@ -22,7 +22,7 @@ import
|
||||
node/health_monitor/topic_health,
|
||||
node/health_monitor/connection_status,
|
||||
]
|
||||
import logos_delivery/api/kernel_api # MessageSeenEvent
|
||||
import logos_delivery/events/kernel_events # MessageSeenEvent
|
||||
|
||||
{.push raises: [].}
|
||||
|
||||
|
||||
@ -62,7 +62,7 @@ import
|
||||
api/events/health_events,
|
||||
api/events/peer_events,
|
||||
],
|
||||
logos_delivery/api/kernel_api, # MessageSeenEvent
|
||||
logos_delivery/events/kernel_events, # MessageSeenEvent
|
||||
logos_delivery/waku/discovery/waku_kademlia,
|
||||
logos_delivery/waku/net/[bound_ports, net_config],
|
||||
./peer_manager,
|
||||
|
||||
@ -33,7 +33,7 @@ import
|
||||
node/subscription_manager,
|
||||
node/peer_manager,
|
||||
]
|
||||
import logos_delivery/api/kernel_api # MessageSeenEvent
|
||||
import logos_delivery/events/kernel_events # MessageSeenEvent
|
||||
|
||||
export waku_relay.WakuRelayHandler
|
||||
|
||||
|
||||
@ -58,8 +58,8 @@ import
|
||||
./factory/waku_conf,
|
||||
./factory/waku_state_info
|
||||
|
||||
# Surfaces the Kernel API interface (and its `MessageSeenEvent`) to consumers
|
||||
# of the Waku layer.
|
||||
# Surfaces the Kernel API interface to consumers of the Waku layer.
|
||||
# `MessageSeenEvent` now lives in `events/kernel_events` (surfaced by the concentrator).
|
||||
export kernel_api
|
||||
|
||||
logScope:
|
||||
|
||||
@ -10,7 +10,7 @@ import ../testlib/[common, wakucore, wakunode, testasync]
|
||||
import logos_delivery
|
||||
import logos_delivery/waku/[waku_node, waku_core]
|
||||
import logos_delivery/waku/factory/waku_conf
|
||||
import logos_delivery/api/messaging_client_api as waku_message_events
|
||||
import logos_delivery/events/messaging_client_events as waku_message_events
|
||||
import tools/confutils/cli_args
|
||||
|
||||
import logos_delivery/channels/reliable_channel_manager
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user