cometd_client/types/
message.rs1use serde::{Deserialize, Serialize};
2use serde_json::Value as JsonValue;
3use serde_with::skip_serializing_none;
4
5#[derive(Debug)]
7pub struct Data<Msg> {
8 pub channel: Option<String>,
10 pub message: Option<Msg>,
12}
13
14#[skip_serializing_none]
15#[derive(Debug, Default, Deserialize, Serialize)]
16pub(crate) struct Message {
17 pub(crate) id: Option<String>,
18 pub(crate) version: Option<String>,
19 #[serde(rename = "minimumVersion")]
20 pub(crate) minimum_version: Option<String>,
21 pub(crate) channel: Option<String>,
22 #[serde(rename = "clientId")]
23 pub(crate) client_id: Option<Box<str>>,
24 #[serde(rename = "supportedConnectionTypes")]
25 pub(crate) supported_connection_types: Option<Vec<String>>,
26 pub(crate) data: Option<JsonValue>,
27 pub(crate) successful: Option<bool>,
28 pub(crate) error: Option<String>,
29 pub(crate) advice: Option<Advice>,
30}
31
32#[skip_serializing_none]
33#[derive(Debug, Default, Serialize, Deserialize)]
34pub(crate) struct Advice {
35 reconnect: Option<Reconnect>,
36 }
39
40impl Advice {
41 #[inline(always)]
42 pub(crate) fn reconnect(this: Option<Self>) -> Reconnect {
43 this.and_then(|advice| advice.reconnect).unwrap_or_default()
44 }
45}
46
47#[allow(missing_docs)]
49#[derive(Debug, Default, Clone, Copy, Serialize, Deserialize)]
50#[serde(rename_all = "lowercase")]
51pub enum Reconnect {
52 #[default]
53 None,
54 Handshake,
55 Retry,
56}