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