rippled
ripple
shamap
SHAMapAddNode.h
1
//------------------------------------------------------------------------------
2
/*
3
This file is part of rippled: https://github.com/ripple/rippled
4
Copyright (c) 2012, 2013 Ripple Labs Inc.
5
6
Permission to use, copy, modify, and/or distribute this software for any
7
purpose with or without fee is hereby granted, provided that the above
8
copyright notice and this permission notice appear in all copies.
9
10
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13
ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17
*/
18
//==============================================================================
19
20
#ifndef RIPPLE_SHAMAP_SHAMAPADDNODE_H_INCLUDED
21
#define RIPPLE_SHAMAP_SHAMAPADDNODE_H_INCLUDED
22
23
#include <
string
>
24
25
namespace
ripple
{
26
27
// results of adding nodes
28
class
SHAMapAddNode
29
{
30
private
:
31
int
mGood
;
32
int
mBad
;
33
int
mDuplicate
;
34
35
public
:
36
SHAMapAddNode
();
37
void
incInvalid
();
38
void
incUseful
();
39
void
incDuplicate
();
40
void
reset
();
41
int
getGood
()
const
;
42
bool
isGood
()
const
;
43
bool
isInvalid
()
const
;
44
bool
isUseful
()
const
;
45
std::string
get
()
const
;
46
47
SHAMapAddNode
&
operator+=
(
SHAMapAddNode
const
& n);
48
49
static
SHAMapAddNode
duplicate
();
50
static
SHAMapAddNode
useful
();
51
static
SHAMapAddNode
invalid
();
52
53
private
:
54
SHAMapAddNode
(
int
good,
int
bad,
int
duplicate
);
55
};
56
57
inline
58
SHAMapAddNode::SHAMapAddNode
()
59
: mGood (0)
60
, mBad (0)
61
, mDuplicate (0)
62
{
63
}
64
65
inline
66
SHAMapAddNode::SHAMapAddNode
(
int
good,
int
bad,
int
duplicate)
67
: mGood (good)
68
, mBad (bad)
69
, mDuplicate (duplicate)
70
{
71
}
72
73
inline
74
void
75
SHAMapAddNode::incInvalid
()
76
{
77
++
mBad
;
78
}
79
80
inline
81
void
82
SHAMapAddNode::incUseful
()
83
{
84
++
mGood
;
85
}
86
87
inline
88
void
89
SHAMapAddNode::incDuplicate
()
90
{
91
++
mDuplicate
;
92
}
93
94
inline
95
void
96
SHAMapAddNode::reset
()
97
{
98
mGood
=
mBad
=
mDuplicate
= 0;
99
}
100
101
inline
102
int
103
SHAMapAddNode::getGood
()
const
104
{
105
return
mGood
;
106
}
107
108
inline
109
bool
110
SHAMapAddNode::isInvalid
()
const
111
{
112
return
mBad
> 0;
113
}
114
115
inline
116
bool
117
SHAMapAddNode::isUseful
()
const
118
{
119
return
mGood
> 0;
120
}
121
122
inline
123
SHAMapAddNode
&
124
SHAMapAddNode::operator+=
(
SHAMapAddNode
const
& n)
125
{
126
mGood
+= n.
mGood
;
127
mBad
+= n.
mBad
;
128
mDuplicate
+= n.
mDuplicate
;
129
130
return
*
this
;
131
}
132
133
inline
134
bool
135
SHAMapAddNode::isGood
()
const
136
{
137
return
(
mGood
+
mDuplicate
) >
mBad
;
138
}
139
140
inline
141
SHAMapAddNode
142
SHAMapAddNode::duplicate
()
143
{
144
return
SHAMapAddNode
(0, 0, 1);
145
}
146
147
inline
148
SHAMapAddNode
149
SHAMapAddNode::useful
()
150
{
151
return
SHAMapAddNode
(1, 0, 0);
152
}
153
154
inline
155
SHAMapAddNode
156
SHAMapAddNode::invalid
()
157
{
158
return
SHAMapAddNode
(0, 1, 0);
159
}
160
161
inline
162
std::string
163
SHAMapAddNode::get
()
const
164
{
165
std::string
ret;
166
if
(
mGood
> 0)
167
{
168
ret.
append
(
"good:"
);
169
ret.
append
(
std::to_string
(
mGood
));
170
}
171
if
(
mBad
> 0)
172
{
173
if
(!ret.
empty
())
174
ret.
append
(
" "
);
175
ret.
append
(
"bad:"
);
176
ret.
append
(
std::to_string
(
mBad
));
177
}
178
if
(
mDuplicate
> 0)
179
{
180
if
(!ret.
empty
())
181
ret.
append
(
" "
);
182
ret.
append
(
"dupe:"
);
183
ret.
append
(
std::to_string
(
mDuplicate
));
184
}
185
if
(ret.
empty
())
186
ret =
"no nodes processed"
;
187
return
ret;
188
}
189
190
}
191
192
#endif
ripple::SHAMapAddNode::reset
void reset()
Definition:
SHAMapAddNode.h:96
ripple::SHAMapAddNode::mDuplicate
int mDuplicate
Definition:
SHAMapAddNode.h:33
ripple::SHAMapAddNode
Definition:
SHAMapAddNode.h:28
ripple::SHAMapAddNode::get
std::string get() const
Definition:
SHAMapAddNode.h:163
std::string
STL class.
ripple::SHAMapAddNode::mGood
int mGood
Definition:
SHAMapAddNode.h:31
ripple::SHAMapAddNode::duplicate
static SHAMapAddNode duplicate()
Definition:
SHAMapAddNode.h:142
ripple::SHAMapAddNode::useful
static SHAMapAddNode useful()
Definition:
SHAMapAddNode.h:149
ripple::SHAMapAddNode::isUseful
bool isUseful() const
Definition:
SHAMapAddNode.h:117
ripple::SHAMapAddNode::invalid
static SHAMapAddNode invalid()
Definition:
SHAMapAddNode.h:156
ripple::SHAMapAddNode::isGood
bool isGood() const
Definition:
SHAMapAddNode.h:135
std::to_string
T to_string(T... args)
ripple::SHAMapAddNode::isInvalid
bool isInvalid() const
Definition:
SHAMapAddNode.h:110
ripple::SHAMapAddNode::SHAMapAddNode
SHAMapAddNode()
Definition:
SHAMapAddNode.h:58
ripple::SHAMapAddNode::mBad
int mBad
Definition:
SHAMapAddNode.h:32
ripple::SHAMapAddNode::operator+=
SHAMapAddNode & operator+=(SHAMapAddNode const &n)
Definition:
SHAMapAddNode.h:124
std::string::append
T append(T... args)
ripple
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition:
RCLCensorshipDetector.h:29
std::string::empty
T empty(T... args)
ripple::SHAMapAddNode::incInvalid
void incInvalid()
Definition:
SHAMapAddNode.h:75
ripple::SHAMapAddNode::incUseful
void incUseful()
Definition:
SHAMapAddNode.h:82
ripple::SHAMapAddNode::getGood
int getGood() const
Definition:
SHAMapAddNode.h:103
ripple::SHAMapAddNode::incDuplicate
void incDuplicate()
Definition:
SHAMapAddNode.h:89
string
Generated by
1.8.17