pub struct InMemoryBackend { /* private fields */ }
Expand description
High-performance in-memory metrics backend using RwLock
This implementation provides:
- Thread-safe concurrent access (multiple readers, single writer)
- O(1) average case lookup and insertion
- Memory-efficient storage
- Lock-free reads when possible
Implementations§
Source§impl InMemoryBackend
impl InMemoryBackend
Sourcepub fn with_capacity(capacity: usize) -> Self
pub fn with_capacity(capacity: usize) -> Self
Create a new in-memory backend with initial capacity
Sourcepub fn get_stats(&self) -> BackendStats
pub fn get_stats(&self) -> BackendStats
Get statistics about this backend
Sourcepub fn get_metrics_by_namespace(&self, namespace: &str) -> Vec<Metric>
pub fn get_metrics_by_namespace(&self, namespace: &str) -> Vec<Metric>
Get metrics by namespace
Sourcepub fn get_metrics_by_type(&self, metric_type: MetricType) -> Vec<Metric>
pub fn get_metrics_by_type(&self, metric_type: MetricType) -> Vec<Metric>
Get metrics by type
Sourcepub fn put_metrics(&self, metrics: Vec<Metric>) -> MetricsResult<()>
pub fn put_metrics(&self, metrics: Vec<Metric>) -> MetricsResult<()>
Bulk insert metrics (more efficient than individual puts)
Sourcepub fn remove_metrics_by_namespace(
&self,
namespace: &str,
) -> MetricsResult<usize>
pub fn remove_metrics_by_namespace( &self, namespace: &str, ) -> MetricsResult<usize>
Remove metrics by namespace
Trait Implementations§
Source§impl Debug for InMemoryBackend
impl Debug for InMemoryBackend
Source§impl Default for InMemoryBackend
impl Default for InMemoryBackend
Source§impl MetricsBackend for InMemoryBackend
impl MetricsBackend for InMemoryBackend
Source§fn put_metric(&self, metric: Metric) -> MetricsResult<()>
fn put_metric(&self, metric: Metric) -> MetricsResult<()>
Store or update a metric
Source§fn get_metric(&self, id: &MetricId) -> MetricsResult<Metric>
fn get_metric(&self, id: &MetricId) -> MetricsResult<Metric>
Retrieve a metric by ID
Source§fn contains_metric(&self, id: &MetricId) -> bool
fn contains_metric(&self, id: &MetricId) -> bool
Check if a metric exists
Source§fn remove_metric(&self, id: &MetricId) -> MetricsResult<()>
fn remove_metric(&self, id: &MetricId) -> MetricsResult<()>
Remove a metric
Source§fn list_metric_ids(&self) -> Vec<MetricId>
fn list_metric_ids(&self) -> Vec<MetricId>
Get all metric IDs currently stored
Source§fn list_all_metrics(&self) -> Vec<Metric>
fn list_all_metrics(&self) -> Vec<Metric>
Get all metrics (potentially expensive operation)
Source§fn metric_count(&self) -> usize
fn metric_count(&self) -> usize
Get the number of metrics stored
Source§fn increment_counter(&self, id: &MetricId, delta: u64) -> MetricsResult<u64>
fn increment_counter(&self, id: &MetricId, delta: u64) -> MetricsResult<u64>
Increment a counter by the given amount
Source§fn record_histogram_sample(
&self,
id: &MetricId,
sample: f64,
) -> MetricsResult<()>
fn record_histogram_sample( &self, id: &MetricId, sample: f64, ) -> MetricsResult<()>
Add a sample to a histogram
Auto Trait Implementations§
impl !Freeze for InMemoryBackend
impl RefUnwindSafe for InMemoryBackend
impl Send for InMemoryBackend
impl Sync for InMemoryBackend
impl Unpin for InMemoryBackend
impl UnwindSafe for InMemoryBackend
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