mirror of
https://github.com/logos-messaging/logos-delivery.git
synced 2026-07-27 23:13:12 +00:00
Rewrite the FFI root over the new per-layer APIs using nim-ffi v0.2.0 typed
{.ffiCtor.}/{.ffiDtor.}/{.ffi.}/{.ffiEvent.} + CBOR, replacing the
hand-written cstring/JSON bridge. Events are fed by internal nim-broker
listeners (no AppCallbacks). Adds the messaging_api/channels_api groups and
the broker-listener event modules, and drops the v0.1 scaffolding
(declare_lib, node_api, node_lifecycle_api, logos_delivery_api/*, json_*).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
50 lines
1.5 KiB
Nim
50 lines
1.5 KiB
Nim
## Message events: send lifecycle (sent/error/propagated/received) plus raw
|
|
## inbound network messages. Each FFI event is fed by an internal broker event.
|
|
|
|
proc onMessageSent*(
|
|
requestId: string, messageHash: string
|
|
) {.ffiEvent: "on_message_sent".}
|
|
|
|
proc onMessageError*(
|
|
requestId: string, messageHash: string, error: string
|
|
) {.ffiEvent: "on_message_error".}
|
|
|
|
proc onMessagePropagated*(
|
|
requestId: string, messageHash: string
|
|
) {.ffiEvent: "on_message_propagated".}
|
|
|
|
proc onMessageReceived*(messageHash: string) {.ffiEvent: "on_message_received".}
|
|
|
|
proc onNetworkMessage*(
|
|
pubsubTopic: string, message: WakuMessage
|
|
) {.ffiEvent: "on_network_message".}
|
|
|
|
proc listenMessageEvents(self: LogosDelivery) =
|
|
let brokerCtx = self.waku.brokerCtx
|
|
|
|
discard MessageSentEvent.listen(
|
|
brokerCtx,
|
|
proc(e: MessageSentEvent) {.async: (raises: []).} =
|
|
onMessageSent($e.requestId, e.messageHash),
|
|
)
|
|
discard MessageErrorEvent.listen(
|
|
brokerCtx,
|
|
proc(e: MessageErrorEvent) {.async: (raises: []).} =
|
|
onMessageError($e.requestId, e.messageHash, e.error),
|
|
)
|
|
discard MessagePropagatedEvent.listen(
|
|
brokerCtx,
|
|
proc(e: MessagePropagatedEvent) {.async: (raises: []).} =
|
|
onMessagePropagated($e.requestId, e.messageHash),
|
|
)
|
|
discard MessageReceivedEvent.listen(
|
|
brokerCtx,
|
|
proc(e: MessageReceivedEvent) {.async: (raises: []).} =
|
|
onMessageReceived(e.messageHash),
|
|
)
|
|
discard MessageSeenEvent.listen(
|
|
brokerCtx,
|
|
proc(e: MessageSeenEvent) {.async: (raises: []).} =
|
|
onNetworkMessage(string(e.topic), e.message),
|
|
)
|