secure_exec_sidecar/
lib.rs1#![forbid(unsafe_code)]
2
3pub(crate) mod bootstrap;
6pub(crate) mod bridge;
7pub(crate) mod execution;
8pub mod extension;
9pub(crate) mod filesystem;
10pub mod generated_protocol;
11#[allow(dead_code)]
12pub(crate) mod json_rpc;
13pub mod limits;
14pub(crate) mod plugins;
15pub mod protocol;
16pub mod service;
17pub(crate) mod state;
18pub mod stdio;
19pub(crate) mod tools;
20pub(crate) mod vm;
21pub mod wire;
22
23pub use extension::{
24 Extension, ExtensionContext, ExtensionFuture, ExtensionInterruptRequest,
25 ExtensionInterruptResponse, ExtensionResponse,
26};
27pub use service::{DispatchResult, NativeSidecar, NativeSidecarConfig, SidecarError};
28pub use state::SidecarRequestTransport;
29
30use wire::{DEFAULT_MAX_FRAME_BYTES, PROTOCOL_NAME, PROTOCOL_VERSION};
31
32pub trait NativeSidecarBridge: secure_exec_bridge::HostBridge {}
33
34impl<T> NativeSidecarBridge for T where T: secure_exec_bridge::HostBridge {}
35
36#[derive(Debug, Clone, Copy, PartialEq, Eq)]
37pub struct SidecarScaffold {
38 pub package_name: &'static str,
39 pub binary_name: &'static str,
40 pub kernel_package: &'static str,
41 pub execution_package: &'static str,
42 pub protocol_name: &'static str,
43 pub protocol_version: u16,
44 pub max_frame_bytes: usize,
45}
46
47pub fn scaffold() -> SidecarScaffold {
48 let kernel = secure_exec_kernel::scaffold();
49 let execution = secure_exec_execution::scaffold();
50
51 SidecarScaffold {
52 package_name: env!("CARGO_PKG_NAME"),
53 binary_name: env!("CARGO_PKG_NAME"),
54 kernel_package: kernel.package_name,
55 execution_package: execution.package_name,
56 protocol_name: PROTOCOL_NAME,
57 protocol_version: PROTOCOL_VERSION,
58 max_frame_bytes: DEFAULT_MAX_FRAME_BYTES,
59 }
60}