]> git.sesse.net Git - nageru/blob - nageru/srt_metrics.h
IWYU-fix nageru/*.h.
[nageru] / nageru / srt_metrics.h
1 #ifndef _SRT_METRICS_H
2 #define _SRT_METRICS_H 1
3
4 #include <stdint.h>
5 #include <atomic>
6 #include <vector>
7 #include <string>
8 #include <utility>
9
10 // Metrics related to an SRT stream (input or output).
11
12 struct SRTMetrics {
13         std::atomic<double> metric_srt_uptime_seconds{0.0 / 0.0};
14         std::atomic<double> metric_srt_send_duration_seconds{0.0 / 0.0};
15         std::atomic<int64_t> metric_srt_sent_bytes{-1};
16         std::atomic<int64_t> metric_srt_received_bytes{-1};
17         std::atomic<int64_t> metric_srt_sent_packets_normal{-1};
18         std::atomic<int64_t> metric_srt_received_packets_normal{-1};
19         std::atomic<int64_t> metric_srt_sent_packets_lost{-1};
20         std::atomic<int64_t> metric_srt_received_packets_lost{-1};
21         std::atomic<int64_t> metric_srt_sent_packets_retransmitted{-1};
22         std::atomic<int64_t> metric_srt_sent_bytes_retransmitted{-1};
23         std::atomic<int64_t> metric_srt_sent_packets_ack{-1};
24         std::atomic<int64_t> metric_srt_received_packets_ack{-1};
25         std::atomic<int64_t> metric_srt_sent_packets_nak{-1};
26         std::atomic<int64_t> metric_srt_received_packets_nak{-1};
27         std::atomic<int64_t> metric_srt_sent_packets_dropped{-1};
28         std::atomic<int64_t> metric_srt_received_packets_dropped{-1};
29         std::atomic<int64_t> metric_srt_sent_bytes_dropped{-1};
30         std::atomic<int64_t> metric_srt_received_bytes_dropped{-1};
31         std::atomic<int64_t> metric_srt_received_packets_undecryptable{-1};
32         std::atomic<int64_t> metric_srt_received_bytes_undecryptable{-1};
33
34         std::atomic<int64_t> metric_srt_filter_received_extra_packets{-1};
35         std::atomic<int64_t> metric_srt_filter_received_rebuilt_packets{-1};
36         std::atomic<int64_t> metric_srt_filter_received_lost_packets{-1};
37
38         std::atomic<double> metric_srt_packet_sending_period_seconds{0.0 / 0.0};
39         std::atomic<int64_t> metric_srt_flow_window_packets{-1};
40         std::atomic<int64_t> metric_srt_congestion_window_packets{-1};
41         std::atomic<int64_t> metric_srt_flight_size_packets{-1};
42         std::atomic<double> metric_srt_rtt_seconds{0.0 / 0.0};
43         std::atomic<double> metric_srt_estimated_bandwidth_bits_per_second{0.0 / 0.0};
44         std::atomic<double> metric_srt_bandwidth_ceiling_bits_per_second{0.0 / 0.0};
45         std::atomic<int64_t> metric_srt_send_buffer_available_bytes{-1};
46         std::atomic<int64_t> metric_srt_receive_buffer_available_bytes{-1};
47         std::atomic<int64_t> metric_srt_mss_bytes{-1};
48         std::atomic<int64_t> metric_srt_sender_unacked_packets{-1};
49         std::atomic<int64_t> metric_srt_sender_unacked_bytes{-1};
50         std::atomic<double> metric_srt_sender_unacked_timespan_seconds{0.0 / 0.0};
51         std::atomic<double> metric_srt_sender_delivery_delay_seconds{0.0 / 0.0};
52         std::atomic<int64_t> metric_srt_receiver_unacked_packets{-1};
53         std::atomic<int64_t> metric_srt_receiver_unacked_bytes{-1};
54         std::atomic<double> metric_srt_receiver_unacked_timespan_seconds{0.0 / 0.0};
55         std::atomic<double> metric_srt_receiver_delivery_delay_seconds{0.0 / 0.0};
56         std::atomic<int64_t> metric_srt_filter_sent_packets{-1};
57
58         // Registers in global_metrics.
59         void init(const std::vector<std::pair<std::string, std::string>> &labels);
60
61         // Unregisters similarly.
62         void deinit(const std::vector<std::pair<std::string, std::string>> &labels);
63
64         void update_srt_stats(int srt_sock);
65 };
66
67 #endif
68