omnia-wasi-messaging 0.31.0

WASI messaging pub/sub interface for the Omnia runtime
Documentation
use wasmtime::component::{Accessor, Resource};

use crate::host::generated::wasi::messaging::producer::{Host, HostWithStore};
use crate::host::generated::wasi::messaging::types::Topic;
use crate::host::resource::{ClientProxy, MessageProxy};
use crate::host::types_impl::{get_client, get_message};
use crate::host::{Result, WasiMessaging, WasiMessagingCtxView};

impl HostWithStore for WasiMessaging {
    async fn send<T>(
        accessor: &Accessor<T, Self>, c: Resource<ClientProxy>, topic: Topic,
        message: Resource<MessageProxy>,
    ) -> Result<()> {
        let client = get_client(accessor, &c)?;
        let msg = get_message(accessor, &message)?;
        client.send(topic, msg).await?;

        Ok(())
    }
}

impl Host for WasiMessagingCtxView<'_> {}