arcbox_protocol/
lib.rs

1//! # arcbox-protocol
2//!
3//! Protocol definitions for ArcBox communication.
4//!
5//! This crate defines the message types and service interfaces used for
6//! communication between:
7//!
8//! - CLI <-> Daemon (ttrpc over Unix socket)
9//! - Host <-> Guest (ttrpc over vsock)
10//! - Docker CLI <-> Daemon (REST API, handled by arcbox-docker)
11//!
12//! ## Protocol Buffers
13//!
14//! The protocol is defined using Protocol Buffers for efficient serialization.
15//! Message types are generated at build time from `.proto` files.
16//!
17//! ## Services
18//!
19//! - [`container`] - Container lifecycle operations
20//! - [`image`] - Image management
21//! - [`machine`] - Virtual machine management
22//! - [`agent`] - Guest agent operations
23
24#![warn(clippy::all, clippy::pedantic, clippy::nursery)]
25#![allow(clippy::module_name_repetitions)]
26
27// Include generated protobuf code
28pub mod common {
29    include!(concat!(env!("OUT_DIR"), "/arcbox.common.rs"));
30}
31
32pub mod container {
33    include!(concat!(env!("OUT_DIR"), "/arcbox.container.rs"));
34}
35
36pub mod image {
37    include!(concat!(env!("OUT_DIR"), "/arcbox.image.rs"));
38}
39
40pub mod machine {
41    include!(concat!(env!("OUT_DIR"), "/arcbox.machine.rs"));
42}
43
44pub mod agent {
45    include!(concat!(env!("OUT_DIR"), "/arcbox.agent.rs"));
46}
47
48// Re-export common types at the crate level for convenience
49pub use common::{Empty, KeyValue, Mount, PortBinding, ResourceLimits, Timestamp};
50
51// Re-export container types
52pub use container::{
53    ContainerConfig, ContainerInfo, ContainerState, ContainerSummary, CreateContainerRequest,
54    CreateContainerResponse, InspectContainerRequest, ListContainersRequest,
55    ListContainersResponse, LogEntry, LogsRequest, RemoveContainerRequest, StartContainerRequest,
56    StopContainerRequest,
57};
58
59// Re-export image types
60pub use image::{
61    ImageConfig, ImageInfo, ImageSummary, InspectImageRequest, ListImagesRequest,
62    ListImagesResponse, PullImageRequest, PullProgress, RemoveImageRequest, RemoveImageResponse,
63};
64
65// Re-export machine types
66pub use machine::{
67    CreateMachineRequest, CreateMachineResponse, InspectMachineRequest, ListMachinesRequest,
68    ListMachinesResponse, MachineHardware, MachineInfo, MachineNetwork, MachineSummary,
69    StartMachineRequest, StopMachineRequest,
70};
71
72// Re-export agent types
73pub use agent::{
74    ContainerStats, CpuStats, ExecOutput, ExecRequest, MemoryStats, PingRequest, PingResponse,
75    SystemInfo,
76};