monitord/varlink/
manager.rs1use serde::{Deserialize, Serialize};
6use zlink::{proxy, ReplyError};
7
8pub const MANAGER_SOCKET_PATH: &str = "/run/systemd/io.systemd.Manager";
9
10#[proxy("io.systemd.Manager")]
12pub trait Manager {
13 async fn describe(&mut self) -> zlink::Result<Result<DescribeOutput, ManagerError>>;
15}
16
17#[derive(Debug, Clone, Serialize, Deserialize)]
22pub struct DescribeOutput {
23 pub runtime: Option<ManagerRuntime>,
24}
25
26#[derive(Debug, Clone, Serialize, Deserialize)]
28pub struct ManagerRuntime {
29 #[serde(rename = "Version")]
31 pub version: Option<String>,
32 #[serde(rename = "SystemState")]
34 pub system_state: Option<String>,
35}
36
37#[derive(Debug, Clone, PartialEq, ReplyError)]
39#[zlink(interface = "io.systemd.Manager")]
40pub enum ManagerError {
41 RateLimitReached,
43}
44
45impl std::fmt::Display for ManagerError {
46 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
47 match self {
48 ManagerError::RateLimitReached => write!(f, "Rate limit reached"),
49 }
50 }
51}
52
53impl std::error::Error for ManagerError {}