use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
pub struct ClientMetadataQuery {
pub v: u32,
#[serde(default, skip_serializing_if = "is_false")]
pub with_metadata_only: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub user_id: Option<u32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub after_client_id: Option<u32>,
pub limit: u32,
}
fn is_false(value: &bool) -> bool {
!*value
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
pub struct ClientMetadata {
pub client_id: u32,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub user_id: Option<u32>,
pub transport: u8,
pub address: String,
pub consumer_groups_count: u32,
#[cfg_attr(
feature = "schemars",
schemars(schema_with = "crate::encoding::opt_bytes_schema")
)]
#[serde(
default,
skip_serializing_if = "Option::is_none",
with = "crate::encoding::opt_bin_bytes"
)]
pub metadata: Option<Vec<u8>>,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
pub struct ClientMetadataList {
pub clients: Vec<ClientMetadata>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub next_cursor: Option<u32>,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
pub struct ProducerPresence {
pub producer_presence_version: u32,
pub observed_at_millis: u64,
pub expires_after_millis: u64,
pub producers: Vec<ProducerStatistics>,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
pub struct ProducerStatistics {
pub instance_id: String,
pub stream: String,
pub topic: String,
pub first_activity_millis: u64,
pub last_activity_millis: u64,
pub submitted_records: u64,
pub submitted_payload_bytes: u64,
pub confirmed_records: Option<u64>,
pub confirmed_payload_bytes: Option<u64>,
pub retries: Option<u64>,
pub failed_calls: u64,
pub last_success_millis: Option<u64>,
pub latency: ProducerLatency,
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
pub struct ProducerLatency {
pub samples: u64,
pub p50_micros: Option<u64>,
pub p99_micros: Option<u64>,
pub p999_micros: Option<u64>,
}