rippled
Loading...
Searching...
No Matches
SHAMapAddNode.h
1#ifndef XRPL_SHAMAP_SHAMAPADDNODE_H_INCLUDED
2#define XRPL_SHAMAP_SHAMAPADDNODE_H_INCLUDED
3
4#include <string>
5
6namespace ripple {
7
8// results of adding nodes
10{
11private:
12 int mGood;
13 int mBad;
15
16public:
18 void
19 incInvalid();
20 void
21 incUseful();
22 void
24 void
25 reset();
26 int
27 getGood() const;
28 bool
29 isGood() const;
30 bool
31 isInvalid() const;
32 bool
33 isUseful() const;
35 get() const;
36
38 operator+=(SHAMapAddNode const& n);
39
40 static SHAMapAddNode
41 duplicate();
42 static SHAMapAddNode
43 useful();
44 static SHAMapAddNode
45 invalid();
46
47private:
48 SHAMapAddNode(int good, int bad, int duplicate);
49};
50
51inline SHAMapAddNode::SHAMapAddNode() : mGood(0), mBad(0), mDuplicate(0)
52{
53}
54
55inline SHAMapAddNode::SHAMapAddNode(int good, int bad, int duplicate)
56 : mGood(good), mBad(bad), mDuplicate(duplicate)
57{
58}
59
60inline void
65
66inline void
71
72inline void
77
78inline void
83
84inline int
86{
87 return mGood;
88}
89
90inline bool
92{
93 return mBad > 0;
94}
95
96inline bool
98{
99 return mGood > 0;
100}
101
102inline SHAMapAddNode&
104{
105 mGood += n.mGood;
106 mBad += n.mBad;
108
109 return *this;
110}
111
112inline bool
114{
115 return (mGood + mDuplicate) > mBad;
116}
117
118inline SHAMapAddNode
120{
121 return SHAMapAddNode(0, 0, 1);
122}
123
124inline SHAMapAddNode
126{
127 return SHAMapAddNode(1, 0, 0);
128}
129
130inline SHAMapAddNode
132{
133 return SHAMapAddNode(0, 1, 0);
134}
135
136inline std::string
138{
139 std::string ret;
140 if (mGood > 0)
141 {
142 ret.append("good:");
144 }
145 if (mBad > 0)
146 {
147 if (!ret.empty())
148 ret.append(" ");
149 ret.append("bad:");
151 }
152 if (mDuplicate > 0)
153 {
154 if (!ret.empty())
155 ret.append(" ");
156 ret.append("dupe:");
158 }
159 if (ret.empty())
160 ret = "no nodes processed";
161 return ret;
162}
163
164} // namespace ripple
165
166#endif
T append(T... args)
static SHAMapAddNode duplicate()
SHAMapAddNode & operator+=(SHAMapAddNode const &n)
static SHAMapAddNode invalid()
std::string get() const
static SHAMapAddNode useful()
T empty(T... args)
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:6
T to_string(T... args)