nichlink_plugin_host/
lib.rs1#![warn(missing_docs)]
10
11mod deployment;
12mod error;
13#[cfg(feature = "wasm")]
14mod lazy_wasm;
15#[cfg(feature = "process-tools")]
16mod process;
17mod verifier;
18#[cfg(feature = "wasm")]
19mod wasm;
20
21pub use deployment::{Deployment, HotDeployment};
22pub use error::HostError;
23#[cfg(feature = "wasm")]
24pub use lazy_wasm::{ValidationChannel, WasmPluginSlot, WasmPluginTable};
25#[cfg(feature = "process-tools")]
26pub use process::{ProcessBackend, ProcessInstance, ProcessLimits, ProcessProgram};
27pub use verifier::{Ed25519Verifier, TrustedPublicKey};
28#[cfg(feature = "wasm")]
29pub use wasm::{WasmBackend, WasmInstance, WasmLimits};
30
31use nichlink_run_method::PluginAdapter;
32
33pub trait PluginInstance: Send + Sync + 'static {
36 fn adapter(&self) -> PluginAdapter;
39
40 fn call(&self, operation: &str, input: &[u8]) -> Result<Vec<u8>, HostError>;
45
46 fn health_check(&self) -> Result<(), HostError> {
49 let response = self.call("health", &[])?;
50 if response == b"ok" {
51 Ok(())
52 } else {
53 Err(HostError::Health(format!(
54 "expected `ok`, received {:?}",
55 String::from_utf8_lossy(&response)
56 )))
57 }
58 }
59}