crate::endpoints! {
self: Stream<Rollup, Out>;
}
#[derive(
phoxal_macros::DescribeWire, Clone, Debug, Eq, PartialEq, serde::Serialize, serde::Deserialize,
)]
pub struct Cursor {
pub sequence: u64,
}
#[derive(
phoxal_macros::DescribeWire,
Clone,
Copy,
Debug,
Eq,
Ord,
PartialEq,
PartialOrd,
serde::Serialize,
serde::Deserialize,
)]
#[serde(rename_all = "snake_case")]
pub enum Direction {
Publish,
Subscribe,
Mixed,
}
#[derive(
phoxal_macros::DescribeWire,
Clone,
Copy,
Debug,
Eq,
Ord,
PartialEq,
PartialOrd,
serde::Serialize,
serde::Deserialize,
)]
#[serde(rename_all = "snake_case")]
pub enum BufferKind {
Outbound,
Latest,
Subscriber,
Mixed,
}
#[derive(
phoxal_macros::DescribeWire, Clone, Debug, PartialEq, serde::Serialize, serde::Deserialize,
)]
pub struct Step {
pub target_period_ns: u64,
pub completed: u64,
pub errors: u64,
pub mean_duration_ns: u64,
pub max_duration_ns: u64,
pub mean_lateness_ns: u64,
pub max_lateness_ns: u64,
pub missed_ticks: u64,
pub overruns: u64,
}
#[derive(
phoxal_macros::DescribeWire, Clone, Debug, PartialEq, serde::Serialize, serde::Deserialize,
)]
pub struct Topic {
pub topic: String,
pub direction: Direction,
pub buffer_kind: BufferKind,
pub count: u64,
pub rate_millihz: u64,
pub drops: u64,
pub latest_overwrites: u64,
pub bounded_evictions: u64,
pub capacity: u64,
pub current_depth: u64,
pub high_water_depth: u64,
pub decode_errors: u64,
pub timeline_filtered: u64,
pub overflowed_rows: u32,
}
#[derive(
phoxal_macros::DescribeWire, Clone, Debug, PartialEq, serde::Serialize, serde::Deserialize,
)]
pub struct Rollup {
pub window_ns: u64,
pub step: Option<Step>,
pub topics: Vec<Topic>,
pub overflow: Option<Topic>,
}