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