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