xrpld
Loading...
Searching...
No Matches
JobTypes.h
1#pragma once
2
3#include <xrpl/beast/utility/instrumentation.h>
4#include <xrpl/core/Job.h>
5#include <xrpl/core/JobTypeInfo.h>
6
7#include <limits>
8#include <map>
9#include <string>
10#include <tuple>
11#include <utility>
12
13namespace xrpl {
14
16{
17public:
19 using const_iterator = Map::const_iterator;
20
21private:
23 : unknown(
25 "invalid",
26 0,
27 std::chrono::milliseconds{0},
28 std::chrono::milliseconds{0})
29 {
30 using namespace std::chrono_literals;
31 int const maxLimit = std::numeric_limits<int>::max();
32
33 auto add = [this](
34 JobType jt,
36 int limit,
38 std::chrono::milliseconds peakLatency) {
39 XRPL_ASSERT(!map.contains(jt), "xrpl::JobTypes::JobTypes::add : unique job type input");
40
41 [[maybe_unused]] auto const inserted =
42 map.emplace(
45 std::forward_as_tuple(jt, name, limit, avgLatency, peakLatency))
46 .second;
47
48 XRPL_ASSERT(inserted == true, "xrpl::JobTypes::JobTypes::add : input is inserted");
49 };
50
51 // clang-format off
52 // avg peak
53 // JobType name limit latency latency
54 add(JtPack, "makeFetchPack", 1, 0ms, 0ms);
55 add(JtPuboldledger, "publishAcqLedger", 2, 10000ms, 15000ms);
56 add(JtValidationUt, "untrustedValidation", maxLimit, 2000ms, 5000ms);
57 add(JtManifest, "manifest", maxLimit, 2000ms, 5000ms);
58 add(JtTransactionL, "localTransaction", maxLimit, 100ms, 500ms);
59 add(JtReplayReq, "ledgerReplayRequest", 10, 250ms, 1000ms);
60 add(JtLedgerReq, "ledgerRequest", 3, 0ms, 0ms);
61 add(JtProposalUt, "untrustedProposal", maxLimit, 500ms, 1250ms);
62 add(JtReplayTask, "ledgerReplayTask", maxLimit, 0ms, 0ms);
63 add(JtLedgerData, "ledgerData", 3, 0ms, 0ms);
64 add(JtClient, "clientCommand", maxLimit, 2000ms, 5000ms);
65 add(JtClientSubscribe, "clientSubscribe", maxLimit, 2000ms, 5000ms);
66 add(JtClientFeeChange, "clientFeeChange", maxLimit, 2000ms, 5000ms);
67 add(JtClientConsensus, "clientConsensus", maxLimit, 2000ms, 5000ms);
68 add(JtClientAcctHist, "clientAccountHistory", maxLimit, 2000ms, 5000ms);
69 add(JtClientRpc, "clientRPC", maxLimit, 2000ms, 5000ms);
70 add(JtClientWebsocket, "clientWebsocket", maxLimit, 2000ms, 5000ms);
71 add(JtRpc, "RPC", maxLimit, 0ms, 0ms);
72 add(JtUpdatePf, "updatePaths", 1, 0ms, 0ms);
73 add(JtTransaction, "transaction", maxLimit, 250ms, 1000ms);
74 add(JtBatch, "batch", maxLimit, 250ms, 1000ms);
75 add(JtAdvance, "advanceLedger", maxLimit, 0ms, 0ms);
76 add(JtPubledger, "publishNewLedger", maxLimit, 3000ms, 4500ms);
77 add(JtTxnData, "fetchTxnData", 5, 0ms, 0ms);
78 add(JtWal, "writeAhead", maxLimit, 1000ms, 2500ms);
79 add(JtValidationT, "trustedValidation", maxLimit, 500ms, 1500ms);
80 add(JtWrite, "writeObjects", maxLimit, 1750ms, 2500ms);
81 add(JtAccept, "acceptLedger", maxLimit, 0ms, 0ms);
82 add(JtProposalT, "trustedProposal", maxLimit, 100ms, 500ms);
83 add(JtSweep, "sweep", 1, 0ms, 0ms);
84 add(JtNetopCluster, "clusterReport", 1, 9999ms, 9999ms);
85 add(JtNetopTimer, "heartbeat", 1, 999ms, 999ms);
86 add(JtAdmin, "administration", maxLimit, 0ms, 0ms);
87 add(JtMissingTxn, "handleHaveTransactions", 1200, 0ms, 0ms);
88 add(JtRequestedTxn, "doTransactions", 1200, 0ms, 0ms);
89
90 add(JtPeer, "peerCommand", 0, 200ms, 2500ms);
91 add(JtDisk, "diskAccess", 0, 500ms, 1000ms);
92 add(JtTxnProc, "processTransaction", 0, 0ms, 0ms);
93 add(JtObSetup, "orderBookSetup", 0, 0ms, 0ms);
94 add(JtPathFind, "pathFind", 0, 0ms, 0ms);
95 add(JtHoRead, "nodeRead", 0, 0ms, 0ms);
96 add(JtHoWrite, "nodeWrite", 0, 0ms, 0ms);
97 add(JtGeneric, "generic", 0, 0ms, 0ms);
98 add(JtNsSyncRead, "SyncReadNode", 0, 0ms, 0ms);
99 add(JtNsAsyncRead, "AsyncReadNode", 0, 0ms, 0ms);
100 add(JtNsWrite, "WriteNode", 0, 0ms, 0ms);
101 // clang-format on
102 }
103
104public:
105 static JobTypes const&
107 {
108 static JobTypes const kTypes;
109 return kTypes;
110 }
111
112 static std::string const&
114 {
115 return instance().get(jt).name();
116 }
117
118 [[nodiscard]] JobTypeInfo const&
119 get(JobType jt) const
120 {
121 auto const iter = map.find(jt);
122 XRPL_ASSERT(iter != map.end(), "xrpl::JobTypes::get : valid input");
123
124 if (iter != map.end())
125 return iter->second;
126
127 return unknown;
128 }
129
130 [[nodiscard]] JobTypeInfo const&
132 {
133 return unknown;
134 }
135
136 [[nodiscard]] Map::size_type
137 size() const
138 {
139 return map.size();
140 }
141
142 [[nodiscard]] const_iterator
143 begin() const
144 {
145 return map.cbegin();
146 }
147
148 [[nodiscard]] const_iterator
149 cbegin() const
150 {
151 return map.cbegin();
152 }
153
154 [[nodiscard]] const_iterator
155 end() const
156 {
157 return map.cend();
158 }
159
160 [[nodiscard]] const_iterator
161 cend() const
162 {
163 return map.cend();
164 }
165
168};
169
170} // namespace xrpl
Holds all the 'static' information about a job, which does not change.
Definition JobTypeInfo.h:15
std::string const & name() const
Definition JobTypeInfo.h:59
Map::size_type size() const
Definition JobTypes.h:137
const_iterator end() const
Definition JobTypes.h:155
JobTypeInfo const & getInvalid() const
Definition JobTypes.h:131
JobTypeInfo unknown
Definition JobTypes.h:166
const_iterator cbegin() const
Definition JobTypes.h:149
const_iterator begin() const
Definition JobTypes.h:143
static std::string const & name(JobType jt)
Definition JobTypes.h:113
std::map< JobType, JobTypeInfo > Map
Definition JobTypes.h:18
JobTypeInfo const & get(JobType jt) const
Definition JobTypes.h:119
Map::const_iterator const_iterator
Definition JobTypes.h:19
static JobTypes const & instance()
Definition JobTypes.h:106
const_iterator cend() const
Definition JobTypes.h:161
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
Dir::ConstIterator const_iterator
Definition Dir.cpp:16
JobType
Definition Job.h:21
@ JtNsWrite
Definition Job.h:78
@ JtPack
Definition Job.h:29
@ JtWrite
Definition Job.h:58
@ JtNsAsyncRead
Definition Job.h:77
@ JtGeneric
Definition Job.h:73
@ JtClientSubscribe
Definition Job.h:32
@ JtPuboldledger
Definition Job.h:30
@ JtDisk
Definition Job.h:67
@ JtNsSyncRead
Definition Job.h:76
@ JtClient
Definition Job.h:31
@ JtInvalid
Definition Job.h:23
@ JtNetopTimer
Definition Job.h:62
@ JtClientWebsocket
Definition Job.h:37
@ JtClientAcctHist
Definition Job.h:35
@ JtWal
Definition Job.h:56
@ JtLedgerReq
Definition Job.h:45
@ JtLedgerData
Definition Job.h:52
@ JtValidationUt
Definition Job.h:40
@ JtTransactionL
Definition Job.h:43
@ JtTransaction
Definition Job.h:48
@ JtProposalUt
Definition Job.h:46
@ JtRpc
Definition Job.h:38
@ JtBatch
Definition Job.h:51
@ JtHoWrite
Definition Job.h:72
@ JtPubledger
Definition Job.h:54
@ JtObSetup
Definition Job.h:69
@ JtReplayReq
Definition Job.h:44
@ JtTxnProc
Definition Job.h:68
@ JtRequestedTxn
Definition Job.h:50
@ JtClientConsensus
Definition Job.h:34
@ JtAccept
Definition Job.h:59
@ JtTxnData
Definition Job.h:55
@ JtNetopCluster
Definition Job.h:61
@ JtReplayTask
Definition Job.h:47
@ JtAdvance
Definition Job.h:53
@ JtPathFind
Definition Job.h:70
@ JtAdmin
Definition Job.h:63
@ JtClientRpc
Definition Job.h:36
@ JtValidationT
Definition Job.h:57
@ JtMissingTxn
Definition Job.h:49
@ JtManifest
Definition Job.h:41
@ JtSweep
Definition Job.h:39
@ JtClientFeeChange
Definition Job.h:33
@ JtHoRead
Definition Job.h:71
@ JtProposalT
Definition Job.h:60
@ JtPeer
Definition Job.h:66
@ JtUpdatePf
Definition Job.h:42
T piecewise_construct