vtx-sdk 0.1.14

Official SDK for developing VTX plugins using Rust and WebAssembly.
Documentation
//! Host-side event bus helpers.

use crate::bindings::vtx::api::vtx_event_bus;
use crate::error::{VtxError, VtxResult};

/// Publishes an event where the payload is an already serialized JSON string.
pub fn publish_raw(topic: &str, payload_json: &str) -> VtxResult<()> {
    vtx_event_bus::publish_event(topic, payload_json).map_err(|e| {
        // The host side performs JSON validation first; a common error is "Invalid event payload".
        if e.to_lowercase().contains("invalid event payload") {
            VtxError::SerializationError(e)
        } else {
            VtxError::from_host_message(e)
        }
    })
}

/// Publishes an event, automatically serializing the payload to JSON.
pub fn publish_json<T: serde::Serialize>(topic: &str, payload: &T) -> VtxResult<()> {
    let payload_json =
        serde_json::to_string(payload).map_err(|e| VtxError::SerializationError(e.to_string()))?;
    publish_raw(topic, &payload_json)
}