rippled
Loading...
Searching...
No Matches
JobTypes.h
1#ifndef XRPL_CORE_JOBTYPES_H_INCLUDED
2#define XRPL_CORE_JOBTYPES_H_INCLUDED
3
4#include <xrpld/core/Job.h>
5#include <xrpld/core/JobTypeInfo.h>
6
7#include <map>
8#include <string>
9
10namespace ripple {
11
13{
14public:
16 using const_iterator = Map::const_iterator;
17
18private:
20 : m_unknown(
22 "invalid",
23 0,
24 std::chrono::milliseconds{0},
25 std::chrono::milliseconds{0})
26 {
27 using namespace std::chrono_literals;
28 int maxLimit = std::numeric_limits<int>::max();
29
30 auto add = [this](
31 JobType jt,
33 int limit,
35 std::chrono::milliseconds peakLatency) {
36 XRPL_ASSERT(
37 m_map.find(jt) == m_map.end(),
38 "ripple::JobTypes::JobTypes::add : unique job type input");
39
40 [[maybe_unused]] auto const inserted =
41 m_map
42 .emplace(
46 jt, name, limit, avgLatency, peakLatency))
47 .second;
48
49 XRPL_ASSERT(
50 inserted == true,
51 "ripple::JobTypes::JobTypes::add : input is inserted");
52 };
53
54 // clang-format off
55 // avg peak
56 // JobType name limit latency latency
57 add(jtPACK, "makeFetchPack", 1, 0ms, 0ms);
58 add(jtPUBOLDLEDGER, "publishAcqLedger", 2, 10000ms, 15000ms);
59 add(jtVALIDATION_ut, "untrustedValidation", maxLimit, 2000ms, 5000ms);
60 add(jtMANIFEST, "manifest", maxLimit, 2000ms, 5000ms);
61 add(jtTRANSACTION_l, "localTransaction", maxLimit, 100ms, 500ms);
62 add(jtREPLAY_REQ, "ledgerReplayRequest", 10, 250ms, 1000ms);
63 add(jtLEDGER_REQ, "ledgerRequest", 3, 0ms, 0ms);
64 add(jtPROPOSAL_ut, "untrustedProposal", maxLimit, 500ms, 1250ms);
65 add(jtREPLAY_TASK, "ledgerReplayTask", maxLimit, 0ms, 0ms);
66 add(jtLEDGER_DATA, "ledgerData", 3, 0ms, 0ms);
67 add(jtCLIENT, "clientCommand", maxLimit, 2000ms, 5000ms);
68 add(jtCLIENT_SUBSCRIBE, "clientSubscribe", maxLimit, 2000ms, 5000ms);
69 add(jtCLIENT_FEE_CHANGE, "clientFeeChange", maxLimit, 2000ms, 5000ms);
70 add(jtCLIENT_CONSENSUS, "clientConsensus", maxLimit, 2000ms, 5000ms);
71 add(jtCLIENT_ACCT_HIST, "clientAccountHistory", maxLimit, 2000ms, 5000ms);
72 add(jtCLIENT_RPC, "clientRPC", maxLimit, 2000ms, 5000ms);
73 add(jtCLIENT_WEBSOCKET, "clientWebsocket", maxLimit, 2000ms, 5000ms);
74 add(jtRPC, "RPC", maxLimit, 0ms, 0ms);
75 add(jtUPDATE_PF, "updatePaths", 1, 0ms, 0ms);
76 add(jtTRANSACTION, "transaction", maxLimit, 250ms, 1000ms);
77 add(jtBATCH, "batch", maxLimit, 250ms, 1000ms);
78 add(jtADVANCE, "advanceLedger", maxLimit, 0ms, 0ms);
79 add(jtPUBLEDGER, "publishNewLedger", maxLimit, 3000ms, 4500ms);
80 add(jtTXN_DATA, "fetchTxnData", 5, 0ms, 0ms);
81 add(jtWAL, "writeAhead", maxLimit, 1000ms, 2500ms);
82 add(jtVALIDATION_t, "trustedValidation", maxLimit, 500ms, 1500ms);
83 add(jtWRITE, "writeObjects", maxLimit, 1750ms, 2500ms);
84 add(jtACCEPT, "acceptLedger", maxLimit, 0ms, 0ms);
85 add(jtPROPOSAL_t, "trustedProposal", maxLimit, 100ms, 500ms);
86 add(jtSWEEP, "sweep", 1, 0ms, 0ms);
87 add(jtNETOP_CLUSTER, "clusterReport", 1, 9999ms, 9999ms);
88 add(jtNETOP_TIMER, "heartbeat", 1, 999ms, 999ms);
89 add(jtADMIN, "administration", maxLimit, 0ms, 0ms);
90 add(jtMISSING_TXN, "handleHaveTransactions", 1200, 0ms, 0ms);
91 add(jtREQUESTED_TXN, "doTransactions", 1200, 0ms, 0ms);
92
93 add(jtPEER, "peerCommand", 0, 200ms, 2500ms);
94 add(jtDISK, "diskAccess", 0, 500ms, 1000ms);
95 add(jtTXN_PROC, "processTransaction", 0, 0ms, 0ms);
96 add(jtOB_SETUP, "orderBookSetup", 0, 0ms, 0ms);
97 add(jtPATH_FIND, "pathFind", 0, 0ms, 0ms);
98 add(jtHO_READ, "nodeRead", 0, 0ms, 0ms);
99 add(jtHO_WRITE, "nodeWrite", 0, 0ms, 0ms);
100 add(jtGENERIC, "generic", 0, 0ms, 0ms);
101 add(jtNS_SYNC_READ, "SyncReadNode", 0, 0ms, 0ms);
102 add(jtNS_ASYNC_READ, "AsyncReadNode", 0, 0ms, 0ms);
103 add(jtNS_WRITE, "WriteNode", 0, 0ms, 0ms);
104 // clang-format on
105 }
106
107public:
108 static JobTypes const&
110 {
111 static JobTypes const types;
112 return types;
113 }
114
115 static std::string const&
117 {
118 return instance().get(jt).name();
119 }
120
121 JobTypeInfo const&
122 get(JobType jt) const
123 {
124 Map::const_iterator const iter(m_map.find(jt));
125 XRPL_ASSERT(iter != m_map.end(), "ripple::JobTypes::get : valid input");
126
127 if (iter != m_map.end())
128 return iter->second;
129
130 return m_unknown;
131 }
132
133 JobTypeInfo const&
135 {
136 return m_unknown;
137 }
138
139 Map::size_type
140 size() const
141 {
142 return m_map.size();
143 }
144
146 begin() const
147 {
148 return m_map.cbegin();
149 }
150
152 cbegin() const
153 {
154 return m_map.cbegin();
155 }
156
158 end() const
159 {
160 return m_map.cend();
161 }
162
164 cend() const
165 {
166 return m_map.cend();
167 }
168
171};
172
173} // namespace ripple
174
175#endif
T cbegin(T... args)
Holds all the 'static' information about a job, which does not change.
Definition JobTypeInfo.h:10
std::string const & name() const
Definition JobTypeInfo.h:51
const_iterator cend() const
Definition JobTypes.h:164
const_iterator end() const
Definition JobTypes.h:158
const_iterator begin() const
Definition JobTypes.h:146
static std::string const & name(JobType jt)
Definition JobTypes.h:116
JobTypeInfo m_unknown
Definition JobTypes.h:169
JobTypeInfo const & get(JobType jt) const
Definition JobTypes.h:122
Map::const_iterator const_iterator
Definition JobTypes.h:16
Map::size_type size() const
Definition JobTypes.h:140
JobTypeInfo const & getInvalid() const
Definition JobTypes.h:134
static JobTypes const & instance()
Definition JobTypes.h:109
const_iterator cbegin() const
Definition JobTypes.h:152
T emplace(T... args)
T end(T... args)
T find(T... args)
T forward_as_tuple(T... args)
T max(T... args)
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:6
JobType
Definition Job.h:16
@ jtWAL
Definition Job.h:51
@ jtCLIENT_RPC
Definition Job.h:31
@ jtNETOP_CLUSTER
Definition Job.h:56
@ jtLEDGER_DATA
Definition Job.h:47
@ jtLEDGER_REQ
Definition Job.h:40
@ jtRPC
Definition Job.h:33
@ jtPROPOSAL_ut
Definition Job.h:41
@ jtINVALID
Definition Job.h:18
@ jtHO_WRITE
Definition Job.h:67
@ jtCLIENT_FEE_CHANGE
Definition Job.h:28
@ jtREPLAY_REQ
Definition Job.h:39
@ jtTRANSACTION
Definition Job.h:43
@ jtPEER
Definition Job.h:61
@ jtREQUESTED_TXN
Definition Job.h:45
@ jtPATH_FIND
Definition Job.h:65
@ jtTXN_PROC
Definition Job.h:63
@ jtMISSING_TXN
Definition Job.h:44
@ jtUPDATE_PF
Definition Job.h:37
@ jtCLIENT_CONSENSUS
Definition Job.h:29
@ jtREPLAY_TASK
Definition Job.h:42
@ jtADMIN
Definition Job.h:58
@ jtACCEPT
Definition Job.h:54
@ jtHO_READ
Definition Job.h:66
@ jtBATCH
Definition Job.h:46
@ jtPUBLEDGER
Definition Job.h:49
@ jtGENERIC
Definition Job.h:68
@ jtCLIENT_ACCT_HIST
Definition Job.h:30
@ jtPUBOLDLEDGER
Definition Job.h:25
@ jtVALIDATION_t
Definition Job.h:52
@ jtNS_WRITE
Definition Job.h:73
@ jtMANIFEST
Definition Job.h:36
@ jtSWEEP
Definition Job.h:34
@ jtNS_SYNC_READ
Definition Job.h:71
@ jtTXN_DATA
Definition Job.h:50
@ jtNS_ASYNC_READ
Definition Job.h:72
@ jtADVANCE
Definition Job.h:48
@ jtOB_SETUP
Definition Job.h:64
@ jtNETOP_TIMER
Definition Job.h:57
@ jtCLIENT
Definition Job.h:26
@ jtPACK
Definition Job.h:24
@ jtTRANSACTION_l
Definition Job.h:38
@ jtVALIDATION_ut
Definition Job.h:35
@ jtCLIENT_SUBSCRIBE
Definition Job.h:27
@ jtWRITE
Definition Job.h:53
@ jtCLIENT_WEBSOCKET
Definition Job.h:32
@ jtDISK
Definition Job.h:62
@ jtPROPOSAL_t
Definition Job.h:55
STL namespace.
T piecewise_construct
T size(T... args)