From 2ecdf87f7b4495f6e9068bd83a977e76415b6a0c Mon Sep 17 00:00:00 2001
From: Roman Volosatovs
Date: Wed, 4 Dec 2024 17:21:43 +0100
Subject: [PATCH 1/3] fix(request-reply): specify request topic
Signed-off-by: Roman Volosatovs
---
wit/request-reply.wit | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/wit/request-reply.wit b/wit/request-reply.wit
index da8a543..7467d76 100644
--- a/wit/request-reply.wit
+++ b/wit/request-reply.wit
@@ -3,7 +3,7 @@
/// request/reply. However, request/reply is a very common pattern in messaging and as such, we have
/// included it as a core interface.
interface request-reply {
- use types.{client, message, error};
+ use types.{client, message, error, topic};
/// Options for a request/reply operation. This is a resource to allow for future expansion of
/// options.
@@ -31,7 +31,7 @@ interface request-reply {
/// error, (2) if the maximum expected number of replies were received before timeout, return
/// the list of messages, or (3) if the timeout is reached before the expected number of replies,
/// return the list of messages received up to that point.
- request: func(c: borrow, message: borrow, options: option) -> result, error>;
+ request: func(c: borrow, topic: topic, message: borrow, options: option) -> result, error>;
/// Replies to the given message with the given response message. The details of which topic
/// the message is sent to is up to the implementation. This allows for reply-to details to be
From 6102db90edb26ce134c4a279e321d84d41cd6d93 Mon Sep 17 00:00:00 2001
From: Roman Volosatovs
Date: Wed, 4 Dec 2024 17:22:06 +0100
Subject: [PATCH 2/3] refactor(types): make `topic` method return an option
Topic can only ever be set by the host, for messages originating in the
guest it cannot be set, therefore make the getter return an optional
value for the cases where the is no topic to return.
Signed-off-by: Roman Volosatovs
---
wit/types.wit | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/wit/types.wit b/wit/types.wit
index d7e8292..62f02f7 100644
--- a/wit/types.wit
+++ b/wit/types.wit
@@ -26,8 +26,8 @@ interface types {
/// A message with a binary payload and additional information
resource message {
constructor(data: list);
- /// The topic/subject/channel this message was received on
- topic: func() -> topic;
+ /// The topic/subject/channel this message was received on, if any
+ topic: func() -> option;
/// An optional content-type describing the format of the data in the message. This is
/// sometimes described as the "format" type
content-type: func() -> option;
From 6e6e1aff9b82d870708e1a40c9f300f4f01dfe01 Mon Sep 17 00:00:00 2001
From: Roman Volosatovs
Date: Wed, 4 Dec 2024 17:23:18 +0100
Subject: [PATCH 3/3] chore: regenerate documentation
Signed-off-by: Roman Volosatovs
---
imports-request-reply.md | 8 ++++++--
imports.md | 4 ++--
messaging-core.md | 4 ++--
messaging-request-reply.md | 8 ++++++--
4 files changed, 16 insertions(+), 8 deletions(-)
diff --git a/imports-request-reply.md b/imports-request-reply.md
index d36307e..84063a7 100644
--- a/imports-request-reply.md
+++ b/imports-request-reply.md
@@ -73,14 +73,14 @@ This allows the component to perform request/reply messaging patterns.
own<message
>
[method]message.topic: func
-The topic/subject/channel this message was received on
+The topic/subject/channel this message was received on, if any
Params
Return values
[method]message.content-type: func
An optional content-type describing the format of the data in the message. This is
@@ -168,6 +168,9 @@ included it as a core interface.
#### `type error`
[`error`](#error)
+#### `type topic`
+[`topic`](#topic)
+
#### `resource request-options`
Options for a request/reply operation. This is a resource to allow for future expansion of
options.
@@ -208,6 +211,7 @@ return the list of messages received up to that point.
Params
diff --git a/imports.md b/imports.md
index 2900330..3f09021 100644
--- a/imports.md
+++ b/imports.md
@@ -72,14 +72,14 @@ It includes the producer
interface for sending messages.
own<message
>
[method]message.topic: func
-The topic/subject/channel this message was received on
+The topic/subject/channel this message was received on, if any
Params
Return values
[method]message.content-type: func
An optional content-type describing the format of the data in the message. This is
diff --git a/messaging-core.md b/messaging-core.md
index 1302613..dd6d715 100644
--- a/messaging-core.md
+++ b/messaging-core.md
@@ -77,14 +77,14 @@ enabling the component to handle incoming messages without request/reply capabil
own<message
>
[method]message.topic: func
-The topic/subject/channel this message was received on
+The topic/subject/channel this message was received on, if any
Params
Return values
[method]message.content-type: func
An optional content-type describing the format of the data in the message. This is
diff --git a/messaging-request-reply.md b/messaging-request-reply.md
index 37d61c0..e9b9abd 100644
--- a/messaging-request-reply.md
+++ b/messaging-request-reply.md
@@ -79,14 +79,14 @@ handling incoming messages with request/reply capabilities.
own<message
>
[method]message.topic: func
-The topic/subject/channel this message was received on
+The topic/subject/channel this message was received on, if any
Params
Return values
[method]message.content-type: func
An optional content-type describing the format of the data in the message. This is
@@ -174,6 +174,9 @@ included it as a core interface.
#### `type error`
[`error`](#error)
+#### `type topic`
+[`topic`](#topic)
+
#### `resource request-options`
Options for a request/reply operation. This is a resource to allow for future expansion of
options.
@@ -214,6 +217,7 @@ return the list of messages received up to that point.
Params