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
38
incInvalid
();
39
void
40
incUseful
();
41
void
42
incDuplicate
();
43
void
44
reset
();
45
int
46
getGood
()
const
;
47
bool
48
isGood
()
const
;
49
bool
50
isInvalid
()
const
;
51
bool
52
isUseful
()
const
;
53
std::string
54
get
()
const
;
55
56
SHAMapAddNode
&
57
operator+=
(
SHAMapAddNode
const
& n);
58
59
static
SHAMapAddNode
60
duplicate
();
61
static
SHAMapAddNode
62
useful
();
63
static
SHAMapAddNode
64
invalid
();
65
66
private
:
67
SHAMapAddNode
(
int
good,
int
bad,
int
duplicate
);
68
};
69
70
inline
SHAMapAddNode::SHAMapAddNode
() : mGood(0), mBad(0), mDuplicate(0)
71
{
72
}
73
74
inline
SHAMapAddNode::SHAMapAddNode
(
int
good,
int
bad,
int
duplicate)
75
: mGood(good), mBad(bad), mDuplicate(duplicate)
76
{
77
}
78
79
inline
void
80
SHAMapAddNode::incInvalid
()
81
{
82
++
mBad
;
83
}
84
85
inline
void
86
SHAMapAddNode::incUseful
()
87
{
88
++
mGood
;
89
}
90
91
inline
void
92
SHAMapAddNode::incDuplicate
()
93
{
94
++
mDuplicate
;
95
}
96
97
inline
void
98
SHAMapAddNode::reset
()
99
{
100
mGood
=
mBad
=
mDuplicate
= 0;
101
}
102
103
inline
int
104
SHAMapAddNode::getGood
()
const
105
{
106
return
mGood
;
107
}
108
109
inline
bool
110
SHAMapAddNode::isInvalid
()
const
111
{
112
return
mBad
> 0;
113
}
114
115
inline
bool
116
SHAMapAddNode::isUseful
()
const
117
{
118
return
mGood
> 0;
119
}
120
121
inline
SHAMapAddNode
&
122
SHAMapAddNode::operator+=
(
SHAMapAddNode
const
& n)
123
{
124
mGood
+= n.
mGood
;
125
mBad
+= n.
mBad
;
126
mDuplicate
+= n.
mDuplicate
;
127
128
return
*
this
;
129
}
130
131
inline
bool
132
SHAMapAddNode::isGood
()
const
133
{
134
return
(
mGood
+
mDuplicate
) >
mBad
;
135
}
136
137
inline
SHAMapAddNode
138
SHAMapAddNode::duplicate
()
139
{
140
return
SHAMapAddNode
(0, 0, 1);
141
}
142
143
inline
SHAMapAddNode
144
SHAMapAddNode::useful
()
145
{
146
return
SHAMapAddNode
(1, 0, 0);
147
}
148
149
inline
SHAMapAddNode
150
SHAMapAddNode::invalid
()
151
{
152
return
SHAMapAddNode
(0, 1, 0);
153
}
154
155
inline
std::string
156
SHAMapAddNode::get
()
const
157
{
158
std::string
ret;
159
if
(
mGood
> 0)
160
{
161
ret.
append
(
"good:"
);
162
ret.
append
(
std::to_string
(
mGood
));
163
}
164
if
(
mBad
> 0)
165
{
166
if
(!ret.
empty
())
167
ret.
append
(
" "
);
168
ret.
append
(
"bad:"
);
169
ret.
append
(
std::to_string
(
mBad
));
170
}
171
if
(
mDuplicate
> 0)
172
{
173
if
(!ret.
empty
())
174
ret.
append
(
" "
);
175
ret.
append
(
"dupe:"
);
176
ret.
append
(
std::to_string
(
mDuplicate
));
177
}
178
if
(ret.
empty
())
179
ret =
"no nodes processed"
;
180
return
ret;
181
}
182
183
}
// namespace ripple
184
185
#endif
ripple::SHAMapAddNode::reset
void reset()
Definition:
SHAMapAddNode.h:98
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:156
std::string
STL class.
ripple::SHAMapAddNode::mGood
int mGood
Definition:
SHAMapAddNode.h:31
ripple::SHAMapAddNode::duplicate
static SHAMapAddNode duplicate()
Definition:
SHAMapAddNode.h:138
ripple::SHAMapAddNode::useful
static SHAMapAddNode useful()
Definition:
SHAMapAddNode.h:144
ripple::SHAMapAddNode::isUseful
bool isUseful() const
Definition:
SHAMapAddNode.h:116
ripple::SHAMapAddNode::invalid
static SHAMapAddNode invalid()
Definition:
SHAMapAddNode.h:150
ripple::SHAMapAddNode::isGood
bool isGood() const
Definition:
SHAMapAddNode.h:132
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:70
ripple::SHAMapAddNode::mBad
int mBad
Definition:
SHAMapAddNode.h:32
ripple::SHAMapAddNode::operator+=
SHAMapAddNode & operator+=(SHAMapAddNode const &n)
Definition:
SHAMapAddNode.h:122
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:80
ripple::SHAMapAddNode::incUseful
void incUseful()
Definition:
SHAMapAddNode.h:86
ripple::SHAMapAddNode::getGood
int getGood() const
Definition:
SHAMapAddNode.h:104
ripple::SHAMapAddNode::incDuplicate
void incDuplicate()
Definition:
SHAMapAddNode.h:92
string
Generated by
1.8.17