generated from WebAssembly/wasi-proposal-template
-
Notifications
You must be signed in to change notification settings - Fork 11
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore(*): split world to imports and re-version to
0.2.0-draft
(#20)
this commit splits the existing messaging world into two worlds. 1. imports 2. messaging that includes imports world to follow the convention of other WIT packages in WASI. It also re-versions the wit package to `0.2.0-draft` Signed-off-by: Jiaxiao Zhou (Mossaka) <[email protected]>
- Loading branch information
Showing
4 changed files
with
251 additions
and
63 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,184 @@ | ||
<h1><a name="imports">World imports</a></h1> | ||
<ul> | ||
<li>Imports: | ||
<ul> | ||
<li>interface <a href="#wasi:messaging_messaging_types_0.2.0_draft"><code>wasi:messaging/[email protected]</code></a></li> | ||
<li>interface <a href="#wasi:messaging_producer_0.2.0_draft"><code>wasi:messaging/[email protected]</code></a></li> | ||
<li>interface <a href="#wasi:messaging_consumer_0.2.0_draft"><code>wasi:messaging/[email protected]</code></a></li> | ||
</ul> | ||
</li> | ||
</ul> | ||
<h2><a name="wasi:messaging_messaging_types_0.2.0_draft"></a>Import interface wasi:messaging/[email protected]</h2> | ||
<hr /> | ||
<h3>Types</h3> | ||
<h4><a name="client"></a><code>resource client</code></h4> | ||
<p>A connection to a message-exchange service (e.g., buffer, broker, etc.).</p> | ||
<h4><a name="error"></a><code>resource error</code></h4> | ||
<p>TODO(danbugs): This should be eventually extracted as an underlying type for other wasi-cloud-core interfaces.</p> | ||
<h4><a name="channel"></a><code>type channel</code></h4> | ||
<p><code>string</code></p> | ||
<p>There are two types of channels: | ||
- publish-subscribe channel, which is a broadcast channel, and | ||
- point-to-point channel, which is a unicast channel. | ||
<p>The interface doesn't highlight this difference in the type itself as that's uniquely a consumer issue.</p> | ||
<h4><a name="guest_configuration"></a><code>record guest-configuration</code></h4> | ||
<p>Configuration includes a required list of channels the guest is subscribing to, and an optional list of extensions key-value pairs | ||
(e.g., partitions/offsets to read from in Kafka/EventHubs, QoS etc.).</p> | ||
<h5>Record Fields</h5> | ||
<ul> | ||
<li><a name="guest_configuration.channels"></a><code>channels</code>: list<<a href="#channel"><a href="#channel"><code>channel</code></a></a>></li> | ||
<li><a name="guest_configuration.extensions"></a><code>extensions</code>: option<list<(<code>string</code>, <code>string</code>)>></li> | ||
</ul> | ||
<h4><a name="format_spec"></a><code>enum format-spec</code></h4> | ||
<p>Format specification for messages</p> | ||
<ul> | ||
<li>more info: https://github.com/clemensv/spec/blob/registry-extensions/registry/spec.md#message-formats</li> | ||
<li>message metadata can further decorate w/ things like format version, and so on.</li> | ||
</ul> | ||
<h5>Enum Cases</h5> | ||
<ul> | ||
<li><a name="format_spec.cloudevents"></a><code>cloudevents</code></li> | ||
<li><a name="format_spec.http"></a><code>http</code></li> | ||
<li><a name="format_spec.amqp"></a><code>amqp</code></li> | ||
<li><a name="format_spec.mqtt"></a><code>mqtt</code></li> | ||
<li><a name="format_spec.kafka"></a><code>kafka</code></li> | ||
<li><a name="format_spec.raw"></a><code>raw</code></li> | ||
</ul> | ||
<h4><a name="message"></a><code>record message</code></h4> | ||
<p>A message with a binary payload, a format specification, and decorative metadata.</p> | ||
<h5>Record Fields</h5> | ||
<ul> | ||
<li><a name="message.data"></a><code>data</code>: list<<code>u8</code>></li> | ||
<li><a name="message.format"></a><code>format</code>: <a href="#format_spec"><a href="#format_spec"><code>format-spec</code></a></a></li> | ||
<li><a name="message.metadata"></a><code>metadata</code>: option<list<(<code>string</code>, <code>string</code>)>></li> | ||
</ul> | ||
<hr /> | ||
<h3>Functions</h3> | ||
<h4><a name="static_client.connect"></a><code>[static]client.connect: func</code></h4> | ||
<h5>Params</h5> | ||
<ul> | ||
<li><a name="static_client.connect.name"></a><code>name</code>: <code>string</code></li> | ||
</ul> | ||
<h5>Return values</h5> | ||
<ul> | ||
<li><a name="static_client.connect.0"></a> result<own<<a href="#client"><a href="#client"><code>client</code></a></a>>, own<<a href="#error"><a href="#error"><code>error</code></a></a>>></li> | ||
</ul> | ||
<h4><a name="static_error.trace"></a><code>[static]error.trace: func</code></h4> | ||
<h5>Return values</h5> | ||
<ul> | ||
<li><a name="static_error.trace.0"></a> <code>string</code></li> | ||
</ul> | ||
<h2><a name="wasi:messaging_producer_0.2.0_draft"></a>Import interface wasi:messaging/[email protected]</h2> | ||
<hr /> | ||
<h3>Types</h3> | ||
<h4><a name="client"></a><code>type client</code></h4> | ||
<p><a href="#client"><a href="#client"><code>client</code></a></a></p> | ||
<p> | ||
#### <a name="channel"></a>`type channel` | ||
[`channel`](#channel) | ||
<p> | ||
#### <a name="message"></a>`type message` | ||
[`message`](#message) | ||
<p> | ||
#### <a name="error"></a>`type error` | ||
[`error`](#error) | ||
<p> | ||
---- | ||
<h3>Functions</h3> | ||
<h4><a name="send"></a><code>send: func</code></h4> | ||
<h5>Params</h5> | ||
<ul> | ||
<li><a name="send.c"></a><code>c</code>: own<<a href="#client"><a href="#client"><code>client</code></a></a>></li> | ||
<li><a name="send.ch"></a><code>ch</code>: <a href="#channel"><a href="#channel"><code>channel</code></a></a></li> | ||
<li><a name="send.m"></a><code>m</code>: list<<a href="#message"><a href="#message"><code>message</code></a></a>></li> | ||
</ul> | ||
<h5>Return values</h5> | ||
<ul> | ||
<li><a name="send.0"></a> result<_, own<<a href="#error"><a href="#error"><code>error</code></a></a>>></li> | ||
</ul> | ||
<h2><a name="wasi:messaging_consumer_0.2.0_draft"></a>Import interface wasi:messaging/[email protected]</h2> | ||
<hr /> | ||
<h3>Types</h3> | ||
<h4><a name="client"></a><code>type client</code></h4> | ||
<p><a href="#client"><a href="#client"><code>client</code></a></a></p> | ||
<p> | ||
#### <a name="message"></a>`type message` | ||
[`message`](#message) | ||
<p> | ||
#### <a name="channel"></a>`type channel` | ||
[`channel`](#channel) | ||
<p> | ||
#### <a name="error"></a>`type error` | ||
[`error`](#error) | ||
<p> | ||
#### <a name="guest_configuration"></a>`type guest-configuration` | ||
[`guest-configuration`](#guest_configuration) | ||
<p> | ||
---- | ||
<h3>Functions</h3> | ||
<h4><a name="subscribe_try_receive"></a><code>subscribe-try-receive: func</code></h4> | ||
<p>Blocking receive for t-milliseconds with ephemeral subscription – if no message is received, returns None</p> | ||
<h5>Params</h5> | ||
<ul> | ||
<li><a name="subscribe_try_receive.c"></a><code>c</code>: own<<a href="#client"><a href="#client"><code>client</code></a></a>></li> | ||
<li><a name="subscribe_try_receive.ch"></a><code>ch</code>: <a href="#channel"><a href="#channel"><code>channel</code></a></a></li> | ||
<li><a name="subscribe_try_receive.t_milliseconds"></a><code>t-milliseconds</code>: <code>u32</code></li> | ||
</ul> | ||
<h5>Return values</h5> | ||
<ul> | ||
<li><a name="subscribe_try_receive.0"></a> result<option<list<<a href="#message"><a href="#message"><code>message</code></a></a>>>, own<<a href="#error"><a href="#error"><code>error</code></a></a>>></li> | ||
</ul> | ||
<h4><a name="subscribe_receive"></a><code>subscribe-receive: func</code></h4> | ||
<p>Blocking receive until message with ephemeral subscription</p> | ||
<h5>Params</h5> | ||
<ul> | ||
<li><a name="subscribe_receive.c"></a><code>c</code>: own<<a href="#client"><a href="#client"><code>client</code></a></a>></li> | ||
<li><a name="subscribe_receive.ch"></a><code>ch</code>: <a href="#channel"><a href="#channel"><code>channel</code></a></a></li> | ||
</ul> | ||
<h5>Return values</h5> | ||
<ul> | ||
<li><a name="subscribe_receive.0"></a> result<list<<a href="#message"><a href="#message"><code>message</code></a></a>>, own<<a href="#error"><a href="#error"><code>error</code></a></a>>></li> | ||
</ul> | ||
<h4><a name="update_guest_configuration"></a><code>update-guest-configuration: func</code></h4> | ||
<p>'Fit-all' type function for updating a guest's configuration – this could be useful for:</p> | ||
<ul> | ||
<li>unsubscribing from a channel,</li> | ||
<li>checkpointing,</li> | ||
<li>etc..</li> | ||
</ul> | ||
<h5>Params</h5> | ||
<ul> | ||
<li><a name="update_guest_configuration.gc"></a><code>gc</code>: <a href="#guest_configuration"><a href="#guest_configuration"><code>guest-configuration</code></a></a></li> | ||
</ul> | ||
<h5>Return values</h5> | ||
<ul> | ||
<li><a name="update_guest_configuration.0"></a> result<_, own<<a href="#error"><a href="#error"><code>error</code></a></a>>></li> | ||
</ul> | ||
<h4><a name="complete_message"></a><code>complete-message: func</code></h4> | ||
<p>A message can exist under several statuses: | ||
(1) available: the message is ready to be read, | ||
(2) acquired: the message has been sent to a consumer (but still exists in the queue), | ||
(3) accepted (result of complete-message): the message has been received and ACK-ed by a consumer and can be safely removed from the queue, | ||
(4) rejected (result of abandon-message): the message has been received and NACK-ed by a consumer, at which point it can be:</p> | ||
<ul> | ||
<li>deleted,</li> | ||
<li>sent to a dead-letter queue, or</li> | ||
<li>kept in the queue for further processing.</li> | ||
</ul> | ||
<h5>Params</h5> | ||
<ul> | ||
<li><a name="complete_message.m"></a><code>m</code>: <a href="#message"><a href="#message"><code>message</code></a></a></li> | ||
</ul> | ||
<h5>Return values</h5> | ||
<ul> | ||
<li><a name="complete_message.0"></a> result<_, own<<a href="#error"><a href="#error"><code>error</code></a></a>>></li> | ||
</ul> | ||
<h4><a name="abandon_message"></a><code>abandon-message: func</code></h4> | ||
<h5>Params</h5> | ||
<ul> | ||
<li><a name="abandon_message.m"></a><code>m</code>: <a href="#message"><a href="#message"><code>message</code></a></a></li> | ||
</ul> | ||
<h5>Return values</h5> | ||
<ul> | ||
<li><a name="abandon_message.0"></a> result<_, own<<a href="#error"><a href="#error"><code>error</code></a></a>>></li> | ||
</ul> |
Oops, something went wrong.