diff --git a/README.md b/README.md index 7757e3c..b5707ab 100644 --- a/README.md +++ b/README.md @@ -189,6 +189,11 @@ carries a `QVariantList data` with positional values: - `data[0]` (`QString`): request id - `data[1]` (`QString`): message hash - `data[2]` (`QString`): local timestamp (ISO-8601) +- **`messageReceived`** – a message arrived on a subscribed topic + - `data[0]` (`QString`): message hash + - `data[1]` (`QString`): content topic + - `data[2]` (`QString`): payload (base64-encoded) + - `data[3]` (`QString`): timestamp (nanoseconds since epoch) - **`connectionStateChanged`** – node connectivity change - `data[0]` (`QString`): connection status - `data[1]` (`QString`): local timestamp (ISO-8601) diff --git a/delivery_module_plugin.cpp b/delivery_module_plugin.cpp index 1ec1e67..975db9d 100644 --- a/delivery_module_plugin.cpp +++ b/delivery_module_plugin.cpp @@ -101,6 +101,16 @@ void DeliveryModulePlugin::event_callback(int callerRet, const char* msg, size_t eventData << timestamp; plugin->emitEvent("messagePropagated", eventData); + } else if (eventType == "message_received") { + // MessageReceivedEvent: messageHash, message (WakuMessage) + QJsonObject msgObj = jsonObj["message"].toObject(); + QVariantList eventData; + eventData << jsonObj["messageHash"].toString(); + eventData << msgObj["contentTopic"].toString(); + eventData << msgObj["payload"].toString(); + eventData << QString::number(msgObj["timestamp"].toDouble(), 'f', 0); + plugin->emitEvent("messageReceived", eventData); + } else if (eventType == "connection_status_change") { QVariantList eventData; eventData << jsonObj["connectionStatus"].toString(); diff --git a/delivery_module_plugin.h b/delivery_module_plugin.h index a2bd6a3..dc6adfa 100644 --- a/delivery_module_plugin.h +++ b/delivery_module_plugin.h @@ -34,6 +34,11 @@ * - `data[0]` (`QString`): request id * - `data[1]` (`QString`): message hash * - `data[2]` (`QString`): local timestamp (ISO-8601) + * - `messageReceived` (emitted when a message arrives on a subscribed topic) + * - `data[0]` (`QString`): message hash + * - `data[1]` (`QString`): content topic + * - `data[2]` (`QString`): payload (base64-encoded) + * - `data[3]` (`QString`): timestamp (nanoseconds since epoch) * - `connectionStateChanged` * - `data[0]` (`QString`): connection status * - `data[1]` (`QString`): local timestamp (ISO-8601) @@ -42,6 +47,7 @@ * - `message_sent` -> `messageSent` * - `message_error` -> `messageError` * - `message_propagated` -> `messagePropagated` + * - `message_received` -> `messageReceived` * - `connection_status_change` -> `connectionStateChanged` * * As a general concept consider using proper content_topic format for your purpose. diff --git a/flake.lock b/flake.lock index a9d26c8..a0cd946 100644 --- a/flake.lock +++ b/flake.lock @@ -122,11 +122,11 @@ "zerokit": "zerokit" }, "locked": { - "lastModified": 1772578080, - "narHash": "sha256-JI+pECDsSe06aNTB0d5PVL9vdyXL01kaeXIkuuAJUNk=", + "lastModified": 1772614128, + "narHash": "sha256-VdCFKJb+xG/YxslYpiFOYISc6wo5CUgiF6UVxUNTb64=", "ref": "refs/heads/master", - "rev": "4a6ad732356c99d00c5f0143df8a470b84b6281d", - "revCount": 2233, + "rev": "0ad55159b39ed74ba6b88b5a9d72db766b4b0f08", + "revCount": 2234, "submodules": true, "type": "git", "url": "https://github.com/logos-messaging/logos-delivery" diff --git a/vendor/logos-delivery b/vendor/logos-delivery index 4a6ad73..0ad5515 160000 --- a/vendor/logos-delivery +++ b/vendor/logos-delivery @@ -1 +1 @@ -Subproject commit 4a6ad732356c99d00c5f0143df8a470b84b6281d +Subproject commit 0ad55159b39ed74ba6b88b5a9d72db766b4b0f08