xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
xrpld
overlay
detail
TxMetrics.h
1
#pragma once
2
3
#include <xrpl/json/json_value.h>
4
5
#include <boost/circular_buffer.hpp>
6
7
#include <xrpl.pb.h>
8
9
#include <
chrono
>
10
#include <
cstdint
>
11
#include <
mutex
>
12
13
namespace
xrpl::metrics
{
14
22
struct
SingleMetrics
23
{
29
SingleMetrics
(
bool
ptu =
true
) :
perTimeUnit
(ptu)
30
{
31
}
32
using
ClockType
=
std::chrono::steady_clock
;
33
ClockType::time_point
intervalStart
{
ClockType::now
()};
34
std::uint64_t
accum
{0};
35
std::uint64_t
rollingAvg
{0};
36
std::uint32_t
n
{0};
37
bool
perTimeUnit
{
true
};
38
boost::circular_buffer<std::uint64_t>
rollingAvgAggregate
{30, 0ull};
43
void
44
addMetrics
(
std::uint32_t
val);
45
};
46
51
struct
MultipleMetrics
52
{
53
MultipleMetrics
(
bool
ptu1 =
true
,
bool
ptu2 =
true
) :
m1
(ptu1),
m2
(ptu2)
54
{
55
}
56
57
SingleMetrics
m1
;
58
SingleMetrics
m2
;
63
void
64
addMetrics
(
std::uint32_t
val2);
70
void
71
addMetrics
(
std::uint32_t
val1,
std::uint32_t
val2);
72
};
73
77
struct
TxMetrics
78
{
79
mutable
std::mutex
mutex
;
80
// TMTransaction bytes and count per second
81
MultipleMetrics
tx
;
82
// TMHaveTransactions bytes and count per second
83
MultipleMetrics
haveTx
;
84
// TMGetLedger bytes and count per second
85
MultipleMetrics
getLedger
;
86
// TMLedgerData bytes and count per second
87
MultipleMetrics
ledgerData
;
88
// TMTransactions bytes and count per second
89
MultipleMetrics
transactions
;
90
// Peers selected to relay in each transaction sample average
91
SingleMetrics
selectedPeers
{
false
};
92
// Peers suppressed to relay in each transaction sample average
93
SingleMetrics
suppressedPeers
{
false
};
94
// Peers with tx reduce-relay feature not enabled
95
SingleMetrics
notEnabled
{
false
};
96
// TMTransactions number of transactions count per second
97
SingleMetrics
missingTx
;
103
void
104
addMetrics
(protocol::MessageType type,
std::uint32_t
val);
111
void
112
addMetrics
(
std::uint32_t
selected,
std::uint32_t
suppressed,
std::uint32_t
notEnabled
);
117
void
118
addMetrics
(
std::uint32_t
missing);
123
json::Value
124
json
()
const
;
125
};
126
127
}
// namespace xrpl::metrics
chrono
json::Value
Represents a JSON value.
Definition
json_value.h:117
cstdint
std::uint64_t
mutex
xrpl::metrics
Definition
TxMetrics.cpp:14
std::chrono::steady_clock::now
T now(T... args)
std::chrono::steady_clock
xrpl::metrics::MultipleMetrics
Run two metrics.
Definition
TxMetrics.h:52
xrpl::metrics::MultipleMetrics::m1
SingleMetrics m1
Definition
TxMetrics.h:57
xrpl::metrics::MultipleMetrics::m2
SingleMetrics m2
Definition
TxMetrics.h:58
xrpl::metrics::MultipleMetrics::addMetrics
void addMetrics(std::uint32_t val2)
Add metrics to m2.
Definition
TxMetrics.cpp:63
xrpl::metrics::MultipleMetrics::MultipleMetrics
MultipleMetrics(bool ptu1=true, bool ptu2=true)
Definition
TxMetrics.h:53
xrpl::metrics::SingleMetrics
Run single metrics rolling average.
Definition
TxMetrics.h:23
xrpl::metrics::SingleMetrics::perTimeUnit
bool perTimeUnit
Definition
TxMetrics.h:37
xrpl::metrics::SingleMetrics::accum
std::uint64_t accum
Definition
TxMetrics.h:34
xrpl::metrics::SingleMetrics::addMetrics
void addMetrics(std::uint32_t val)
Add metrics value.
Definition
TxMetrics.cpp:76
xrpl::metrics::SingleMetrics::rollingAvgAggregate
boost::circular_buffer< std::uint64_t > rollingAvgAggregate
Definition
TxMetrics.h:38
xrpl::metrics::SingleMetrics::rollingAvg
std::uint64_t rollingAvg
Definition
TxMetrics.h:35
xrpl::metrics::SingleMetrics::ClockType
std::chrono::steady_clock ClockType
Definition
TxMetrics.h:32
xrpl::metrics::SingleMetrics::intervalStart
ClockType::time_point intervalStart
Definition
TxMetrics.h:33
xrpl::metrics::SingleMetrics::SingleMetrics
SingleMetrics(bool ptu=true)
Class constructor.
Definition
TxMetrics.h:29
xrpl::metrics::SingleMetrics::n
std::uint32_t n
Definition
TxMetrics.h:36
xrpl::metrics::TxMetrics
Run transaction reduce-relay feature related metrics.
Definition
TxMetrics.h:78
xrpl::metrics::TxMetrics::addMetrics
void addMetrics(protocol::MessageType type, std::uint32_t val)
Add protocol message metrics.
Definition
TxMetrics.cpp:17
xrpl::metrics::TxMetrics::suppressedPeers
SingleMetrics suppressedPeers
Definition
TxMetrics.h:93
xrpl::metrics::TxMetrics::notEnabled
SingleMetrics notEnabled
Definition
TxMetrics.h:95
xrpl::metrics::TxMetrics::missingTx
SingleMetrics missingTx
Definition
TxMetrics.h:97
xrpl::metrics::TxMetrics::getLedger
MultipleMetrics getLedger
Definition
TxMetrics.h:85
xrpl::metrics::TxMetrics::tx
MultipleMetrics tx
Definition
TxMetrics.h:81
xrpl::metrics::TxMetrics::transactions
MultipleMetrics transactions
Definition
TxMetrics.h:89
xrpl::metrics::TxMetrics::ledgerData
MultipleMetrics ledgerData
Definition
TxMetrics.h:87
xrpl::metrics::TxMetrics::haveTx
MultipleMetrics haveTx
Definition
TxMetrics.h:83
xrpl::metrics::TxMetrics::mutex
std::mutex mutex
Definition
TxMetrics.h:79
xrpl::metrics::TxMetrics::json
json::Value json() const
Get json representation of the metrics.
Definition
TxMetrics.cpp:100
xrpl::metrics::TxMetrics::selectedPeers
SingleMetrics selectedPeers
Definition
TxMetrics.h:91
Generated by
1.17.0