1use serde::{Deserialize, Serialize};
2
3#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
9pub struct ClientMetadataQuery {
10 pub v: u32,
11 #[serde(default, skip_serializing_if = "is_false")]
14 pub with_metadata_only: bool,
15 #[serde(default, skip_serializing_if = "Option::is_none")]
17 pub user_id: Option<u32>,
18 #[serde(default, skip_serializing_if = "Option::is_none")]
21 pub after_client_id: Option<u32>,
22 pub limit: u32,
24}
25
26fn is_false(value: &bool) -> bool {
27 !*value
28}
29
30#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
37pub struct ClientMetadata {
38 pub client_id: u32,
39 #[serde(default, skip_serializing_if = "Option::is_none")]
40 pub user_id: Option<u32>,
41 pub transport: u8,
44 pub address: String,
45 pub consumer_groups_count: u32,
46 #[serde(
47 default,
48 skip_serializing_if = "Option::is_none",
49 with = "crate::encoding::opt_bin_bytes"
50 )]
51 pub metadata: Option<Vec<u8>>,
52}
53
54#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
59pub struct ClientMetadataList {
60 pub clients: Vec<ClientMetadata>,
61 #[serde(default, skip_serializing_if = "Option::is_none")]
62 pub next_cursor: Option<u32>,
63}
64
65#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
66pub struct ProducerPresence {
67 pub producer_presence_version: u32,
68 pub observed_at_millis: u64,
69 pub expires_after_millis: u64,
70 pub producers: Vec<ProducerStatistics>,
71}
72
73#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
74pub struct ProducerStatistics {
75 pub instance_id: String,
76 pub stream: String,
77 pub topic: String,
78 pub first_activity_millis: u64,
79 pub last_activity_millis: u64,
80 pub submitted_records: u64,
81 pub submitted_payload_bytes: u64,
82 pub confirmed_records: Option<u64>,
83 pub confirmed_payload_bytes: Option<u64>,
84 pub retries: Option<u64>,
85 pub failed_calls: u64,
86 pub last_success_millis: Option<u64>,
87 pub latency: ProducerLatency,
88}
89
90#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
91pub struct ProducerLatency {
92 pub samples: u64,
93 pub p50_micros: Option<u64>,
94 pub p99_micros: Option<u64>,
95 pub p999_micros: Option<u64>,
96}