Skip to main content

secure_exec_sidecar/
lib.rs

1#![forbid(unsafe_code)]
2
3//! Native sidecar scaffold that composes the kernel and execution crates.
4
5pub(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}