42 lines · 1.6 KB · Rust
RawDownload
//! IPC service for calling JS functions registered by Warp plugins.//!//! This service is hosted by the plugin host process and used by the main app process to call//! plugin functions defined in JS.//!//! Functions are called by a given `JsFunctionId`; this service does not enforce correctness of//! given IDs. Valid IDs are expected to be passed from plugin host process to app process by some//! other means (e.g. some other service). For example, IDs for Command Signature generator//! functions are contained within `CommandSignature` structs passed from plugin host to app via//! the `RegisterCommandSignature` service.//!//! Similarly, this service does not enforce correctness of input/output types; the caller is//! expected to call a function with its expected input type and deserialize its output bytes//! correctly.//!//! To serialize input/deserialize output, callers are expected to use `bincode`.use async_trait::async_trait;use serde::{Deserialize, Serialize};use warp_js::{JsFunctionId, SerializedJsValue}; #[derive(Clone, Serialize, Deserialize, Debug)]pub struct CallJsFunctionRequest {    /// The `JsFunctionId` of the function to call.    pub id: JsFunctionId,     /// The function's input, serialized to bytes.    pub serialized_input: SerializedJsValue,} #[derive(Clone, Serialize, Deserialize, Debug)]pub enum CallJsFunctionResponse {    Success(SerializedJsValue),    Error { message: String },} pub struct CallJsFunctionService {} #[async_trait]impl ipc::Service for CallJsFunctionService {    type Request = CallJsFunctionRequest;    type Response = CallJsFunctionResponse;}