pub struct TelemetryRing { /* private fields */ }Expand description
Fixed-capacity ring buffer for metric samples from a single Data Plane core.
Single-producer (Data Plane core), single-consumer (Control Plane exporter). On overflow, the oldest samples are silently dropped — this is acceptable for metrics because they are ephemeral and the exporter scrapes frequently.
Implementations§
Source§impl TelemetryRing
impl TelemetryRing
Sourcepub fn new(capacity: usize) -> Self
pub fn new(capacity: usize) -> Self
Create a new telemetry ring with the given capacity (rounded to power of two).
Sourcepub fn record(&mut self, sample: MetricSample)
pub fn record(&mut self, sample: MetricSample)
Record a metric sample (called from Data Plane core).
Lock-free, allocation-free. If the ring is full, the oldest sample is overwritten and the drop counter incremented.
Sourcepub fn drain_into(&self, buf: &mut Vec<MetricSample>) -> usize
pub fn drain_into(&self, buf: &mut Vec<MetricSample>) -> usize
Drain all available samples into the provided buffer (called from Control Plane).
Returns the number of samples drained.
Sourcepub fn dropped_count(&self) -> u64
pub fn dropped_count(&self) -> u64
Number of samples dropped due to ring overflow.
Trait Implementations§
impl Send for TelemetryRing
impl Sync for TelemetryRing
Auto Trait Implementations§
impl !Freeze for TelemetryRing
impl RefUnwindSafe for TelemetryRing
impl Unpin for TelemetryRing
impl UnsafeUnpin for TelemetryRing
impl UnwindSafe for TelemetryRing
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more