syncthing_types/system/
status.rs

1use crate::{DeviceID, Timestamp};
2use http::Uri;
3use serde::{Deserialize, Serialize};
4use std::collections::HashMap;
5use std::path::PathBuf;
6
7#[non_exhaustive]
8#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)]
9#[serde(rename_all = "camelCase")]
10pub struct DiscoveryStatus {
11    #[serde(rename = "discoveryEnabled")]
12    pub enabled: bool,
13    #[serde(rename = "discoveryStatus")]
14    pub status: HashMap<String, String>,
15}
16
17#[non_exhaustive]
18#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)]
19#[serde(rename_all = "camelCase")]
20pub struct ListenStatusEntry {
21    pub error: Option<String>,
22    #[serde(default)]
23    #[serde(with = " http_serde_ext::uri::vec")]
24    pub lan_addresses: Vec<Uri>,
25    #[serde(default)]
26    #[serde(with = " http_serde_ext::uri::vec")]
27    pub wan_addresses: Vec<Uri>,
28}
29
30#[non_exhaustive]
31#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)]
32#[serde(rename_all = "camelCase")]
33pub struct ConnectionStatusEntry {
34    pub when: Timestamp,
35    pub error: Option<String>,
36}
37
38#[non_exhaustive]
39#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)]
40#[serde(rename_all = "camelCase")]
41pub struct Status {
42    #[serde(rename = "myID")]
43    pub device_id: DeviceID,
44    pub goroutines: u32,
45    pub alloc: u32,
46    pub sys: u32,
47    pub tilde: PathBuf,
48    #[serde(flatten)]
49    pub discovery: Option<DiscoveryStatus>,
50    #[serde(default)]
51    #[serde(with = "http_serde_ext::uri::hash_map_key")]
52    pub connection_service_status: HashMap<Uri, ListenStatusEntry>,
53    #[serde(default)]
54    #[serde(with = "http_serde_ext::uri::hash_map_key")]
55    pub last_dial_status: HashMap<Uri, ConnectionStatusEntry>,
56    pub path_separator: String,
57    pub ur_version_max: u32,
58    pub uptime: u32,
59    pub start_time: Timestamp,
60    pub gui_address_overridden: bool,
61    #[serde(with = "http_serde_ext::uri")]
62    pub gui_address_used: Uri,
63}