watermelon_proto/
server_info.rs1use alloc::{string::String, vec::Vec};
2use core::{net::IpAddr, num::NonZero};
3
4use serde::Deserialize;
5
6use crate::ServerAddr;
7
8#[derive(Debug, PartialEq, Eq, Deserialize)]
9#[allow(clippy::struct_excessive_bools)]
10pub struct ServerInfo {
11 #[serde(rename = "server_id")]
12 pub id: String,
13 #[serde(rename = "server_name")]
14 pub name: String,
15 pub version: String,
16 #[serde(rename = "go")]
17 pub go_version: String,
18 pub host: IpAddr,
19 pub port: NonZero<u16>,
20 #[serde(rename = "headers")]
21 pub supports_headers: bool,
22 pub max_payload: NonZero<u32>,
23 #[serde(rename = "proto")]
24 pub protocol_version: u32,
25 #[serde(default)]
26 pub client_id: Option<u64>,
27 #[serde(default)]
28 pub auth_required: bool,
29 #[serde(default)]
30 pub tls_required: bool,
31 #[serde(default)]
32 pub tls_verify: bool,
33 #[serde(default)]
34 pub tls_available: bool,
35 #[serde(default)]
36 pub connect_urls: Vec<ServerAddr>,
37 #[serde(default, rename = "ws_connect_urls")]
38 pub websocket_connect_urls: Vec<ServerAddr>,
39 #[serde(default, rename = "ldm")]
40 pub lame_duck_mode: bool,
41 #[serde(default)]
42 pub git_commit: Option<String>,
43 #[serde(default, rename = "jetstream")]
44 pub supports_jetstream: bool,
45 #[serde(default)]
46 pub ip: Option<IpAddr>,
47 #[serde(default)]
48 pub client_ip: Option<IpAddr>,
49 #[serde(default)]
50 pub nonce: Option<String>,
51 #[serde(default, rename = "cluster")]
52 pub cluster_name: Option<String>,
53 #[serde(default)]
54 pub domain: Option<String>,
55
56 #[serde(flatten)]
57 pub non_standard: NonStandardServerInfo,
58}
59
60#[derive(Debug, PartialEq, Eq, Deserialize, Default)]
61#[non_exhaustive]
62pub struct NonStandardServerInfo {
63 #[cfg(feature = "non-standard-zstd")]
64 #[serde(default, rename = "m4ss_zstd")]
65 pub zstd: bool,
66}