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