Mountain/IPC/Common/PerformanceMetrics/
ThroughputMetrics.rs1#![allow(non_snake_case)]
2
3use std::time::Instant;
8
9#[derive(Debug, Clone)]
10pub struct Struct {
11 pub MessagesReceived:u64,
12
13 pub MessagesSent:u64,
14
15 pub BytesReceived:u64,
16
17 pub BytesSent:u64,
18
19 pub StartTime:Instant,
20}
21
22impl Struct {
23 pub fn new() -> Self {
24 Self {
25 MessagesReceived:0,
26
27 MessagesSent:0,
28
29 BytesReceived:0,
30
31 BytesSent:0,
32
33 StartTime:Instant::now(),
34 }
35 }
36
37 pub fn RecordReceived(&mut self, Bytes:u64) {
38 self.MessagesReceived += 1;
39
40 self.BytesReceived += Bytes;
41 }
42
43 pub fn RecordSent(&mut self, Bytes:u64) {
44 self.MessagesSent += 1;
45
46 self.BytesSent += Bytes;
47 }
48
49 pub fn MessagesPerSecondReceived(&self) -> f64 {
50 let Elapsed = self.StartTime.elapsed().as_secs_f64();
51
52 if Elapsed > 0.0 { self.MessagesReceived as f64 / Elapsed } else { 0.0 }
53 }
54
55 pub fn MessagesPerSecondSent(&self) -> f64 {
56 let Elapsed = self.StartTime.elapsed().as_secs_f64();
57
58 if Elapsed > 0.0 { self.MessagesSent as f64 / Elapsed } else { 0.0 }
59 }
60
61 pub fn BytesPerSecondReceived(&self) -> f64 {
62 let Elapsed = self.StartTime.elapsed().as_secs_f64();
63
64 if Elapsed > 0.0 { self.BytesReceived as f64 / Elapsed } else { 0.0 }
65 }
66
67 pub fn BytesPerSecondSent(&self) -> f64 {
68 let Elapsed = self.StartTime.elapsed().as_secs_f64();
69
70 if Elapsed > 0.0 { self.BytesSent as f64 / Elapsed } else { 0.0 }
71 }
72}
73
74impl Default for Struct {
75 fn default() -> Self { Self::new() }
76}