rippled
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 mGood;
12 int mBad;
14
15public:
17 void
18 incInvalid();
19 void
20 incUseful();
21 void
23 void
24 reset();
25 int
26 getGood() const;
27 bool
28 isGood() const;
29 bool
30 isInvalid() const;
31 bool
32 isUseful() const;
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
50inline SHAMapAddNode::SHAMapAddNode() : mGood(0), mBad(0), mDuplicate(0)
51{
52}
53
54inline SHAMapAddNode::SHAMapAddNode(int good, int bad, int duplicate)
55 : mGood(good), mBad(bad), mDuplicate(duplicate)
56{
57}
58
59inline void
64
65inline void
70
71inline void
76
77inline void
82
83inline int
85{
86 return mGood;
87}
88
89inline bool
91{
92 return mBad > 0;
93}
94
95inline bool
97{
98 return mGood > 0;
99}
100
101inline SHAMapAddNode&
103{
104 mGood += n.mGood;
105 mBad += n.mBad;
107
108 return *this;
109}
110
111inline bool
113{
114 return (mGood + mDuplicate) > mBad;
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 (mGood > 0)
140 {
141 ret.append("good:");
143 }
144 if (mBad > 0)
145 {
146 if (!ret.empty())
147 ret.append(" ");
148 ret.append("bad:");
150 }
151 if (mDuplicate > 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)