use crate::bus::zenoh::BusyResponse;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct GetRequest {
pub path: String,
}
impl GetRequest {
pub fn new(path: impl Into<String>) -> Self {
Self { path: path.into() }
}
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum GetResponse {
Ok { bytes: Vec<u8> },
NotFound,
InvalidPath(InvalidPathReason),
Unavailable(UnavailableReason),
Busy,
}
#[non_exhaustive]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum InvalidPathReason {
Empty,
ParentTraversal,
BackslashSeparator,
EmptyComponent,
}
#[non_exhaustive]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum UnavailableReason {
Io,
}
impl BusyResponse for GetResponse {
fn busy() -> Self {
Self::Busy
}
}