xrpld
Loading...
Searching...
No Matches
SHAMapAddNode.h
1#pragma once
2
3#include <string>
4
5namespace xrpl {
6
7// results of adding nodes
9{
10private:
11 int good_;
12 int bad_;
14
15public:
17 void
18 incInvalid();
19 void
20 incUseful();
21 void
23 void
24 reset();
25 [[nodiscard]] int
26 getGood() const;
27 [[nodiscard]] bool
28 isGood() const;
29 [[nodiscard]] bool
30 isInvalid() const;
31 [[nodiscard]] bool
32 isUseful() const;
33 [[nodiscard]] std::string
34 get() const;
35
37 operator+=(SHAMapAddNode const& n);
38
39 static SHAMapAddNode
40 duplicate();
41 static SHAMapAddNode
42 useful();
43 static SHAMapAddNode
44 invalid();
45
46private:
47 SHAMapAddNode(int good, int bad, int duplicate);
48};
49
51{
52}
53
54inline SHAMapAddNode::SHAMapAddNode(int good, int bad, int duplicate)
55 : good_(good), bad_(bad), duplicate_(duplicate)
56{
57}
58
59inline void
64
65inline void
70
71inline void
76
77inline void
82
83inline int
85{
86 return good_;
87}
88
89inline bool
91{
92 return bad_ > 0;
93}
94
95inline bool
97{
98 return good_ > 0;
99}
100
101inline SHAMapAddNode&
103{
104 good_ += n.good_;
105 bad_ += n.bad_;
107
108 return *this;
109}
110
111inline bool
113{
114 return (good_ + duplicate_) > bad_;
115}
116
117inline SHAMapAddNode
119{
120 return SHAMapAddNode(0, 0, 1);
121}
122
123inline SHAMapAddNode
125{
126 return SHAMapAddNode(1, 0, 0);
127}
128
129inline SHAMapAddNode
131{
132 return SHAMapAddNode(0, 1, 0);
133}
134
135inline std::string
137{
138 std::string ret;
139 if (good_ > 0)
140 {
141 ret.append("good:");
143 }
144 if (bad_ > 0)
145 {
146 if (!ret.empty())
147 ret.append(" ");
148 ret.append("bad:");
150 }
151 if (duplicate_ > 0)
152 {
153 if (!ret.empty())
154 ret.append(" ");
155 ret.append("dupe:");
157 }
158 if (ret.empty())
159 ret = "no nodes processed";
160 return ret;
161}
162
163} // namespace xrpl
T append(T... args)
SHAMapAddNode & operator+=(SHAMapAddNode const &n)
static SHAMapAddNode duplicate()
static SHAMapAddNode useful()
bool isInvalid() const
std::string get() const
static SHAMapAddNode invalid()
bool isUseful() const
T empty(T... args)
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
T to_string(T... args)