1use thiserror::Error;
2
3use crate::transport::RuntimeTransportKind;
4
5#[derive(Debug, Error)]
6pub enum RuntimeError {
7 #[error("transport I/O failed: {0}")]
8 Io(#[from] std::io::Error),
9
10 #[error("protocol validation failed: {0}")]
11 Protocol(#[from] nnrp_core::NnrpError),
12
13 #[error("unsupported transport: {0}")]
14 UnsupportedTransport(&'static str),
15
16 #[error("frame id overflowed")]
17 FrameIdOverflow,
18
19 #[error("runtime frame too large: declared {declared} bytes exceeds max {max} bytes")]
20 FrameTooLarge { declared: usize, max: usize },
21
22 #[error("runtime transport {transport:?} closed: {detail}")]
23 TransportClosed {
24 transport: RuntimeTransportKind,
25 detail: String,
26 },
27
28 #[error("unexpected runtime message: {0}")]
29 UnexpectedMessage(&'static str),
30
31 #[error("runtime internal error: {0}")]
32 Internal(&'static str),
33}