cassandra_cpp/cassandra/
metrics.rs

1use crate::cassandra_sys::CassMetrics as _CassMetrics;
2
3/// Metrics about the current session.
4#[allow(missing_docs)] // See DataStax docs
5#[derive(Debug)]
6pub struct SessionMetrics {
7    pub min_us: u64,
8    pub max_us: u64,
9    pub mean_us: u64,
10    pub stddev_us: u64,
11    pub median_us: u64,
12    pub percentile_75th_us: u64,
13    pub percentile_95th_us: u64,
14    pub percentile_98th_us: u64,
15    pub percentile_99th_us: u64,
16    pub percentile_999th_us: u64,
17
18    pub mean_rate_per_sec: f64,
19    pub one_minute_rate_per_seq: f64,
20    pub five_minute_rate_per_sec: f64,
21    pub fifteen_minute_rate_per_sec: f64,
22
23    pub total_connections: u64,
24    pub available_connections: u64,
25    pub exceeded_pending_requests_water_mark: u64,
26    pub exceeded_write_bytes_water_mark: u64,
27
28    pub connection_timeouts: u64,
29    pub pending_request_timeouts: u64,
30    pub request_timeouts: u64,
31}
32
33impl SessionMetrics {
34    /// Build session metrics from underlying type.
35    pub(crate) fn build(inner: *const _CassMetrics) -> Self {
36        let inner = unsafe { &*inner };
37        SessionMetrics {
38            min_us: inner.requests.min,
39            max_us: inner.requests.max,
40            mean_us: inner.requests.mean,
41            stddev_us: inner.requests.stddev,
42            median_us: inner.requests.median,
43            percentile_75th_us: inner.requests.percentile_75th,
44            percentile_95th_us: inner.requests.percentile_95th,
45            percentile_98th_us: inner.requests.percentile_98th,
46            percentile_99th_us: inner.requests.percentile_99th,
47            percentile_999th_us: inner.requests.percentile_999th,
48            mean_rate_per_sec: inner.requests.mean_rate,
49            one_minute_rate_per_seq: inner.requests.one_minute_rate,
50            five_minute_rate_per_sec: inner.requests.five_minute_rate,
51            fifteen_minute_rate_per_sec: inner.requests.fifteen_minute_rate,
52            total_connections: inner.stats.total_connections,
53            available_connections: inner.stats.available_connections,
54            exceeded_pending_requests_water_mark: inner.stats.exceeded_pending_requests_water_mark,
55            exceeded_write_bytes_water_mark: inner.stats.exceeded_write_bytes_water_mark,
56            connection_timeouts: inner.errors.connection_timeouts,
57            pending_request_timeouts: inner.errors.pending_request_timeouts,
58            request_timeouts: inner.errors.request_timeouts,
59        }
60    }
61}