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) : mGood(good), mBad(bad), mDuplicate(duplicate)
55{
56}
57
58inline void
63
64inline void
69
70inline void
75
76inline void
81
82inline int
84{
85 return mGood;
86}
87
88inline bool
90{
91 return mBad > 0;
92}
93
94inline bool
96{
97 return mGood > 0;
98}
99
100inline SHAMapAddNode&
102{
103 mGood += n.mGood;
104 mBad += n.mBad;
106
107 return *this;
108}
109
110inline bool
112{
113 return (mGood + mDuplicate) > mBad;
114}
115
116inline SHAMapAddNode
118{
119 return SHAMapAddNode(0, 0, 1);
120}
121
122inline SHAMapAddNode
124{
125 return SHAMapAddNode(1, 0, 0);
126}
127
128inline SHAMapAddNode
130{
131 return SHAMapAddNode(0, 1, 0);
132}
133
134inline std::string
136{
137 std::string ret;
138 if (mGood > 0)
139 {
140 ret.append("good:");
142 }
143 if (mBad > 0)
144 {
145 if (!ret.empty())
146 ret.append(" ");
147 ret.append("bad:");
149 }
150 if (mDuplicate > 0)
151 {
152 if (!ret.empty())
153 ret.append(" ");
154 ret.append("dupe:");
156 }
157 if (ret.empty())
158 ret = "no nodes processed";
159 return ret;
160}
161
162} // 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)