rippled
Loading...
Searching...
No Matches
xrpld
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
std::string::append
T append(T... args)
std::string
ripple::SHAMapAddNode
Definition
SHAMapAddNode.h:29
ripple::SHAMapAddNode::incUseful
void incUseful()
Definition
SHAMapAddNode.h:86
ripple::SHAMapAddNode::reset
void reset()
Definition
SHAMapAddNode.h:98
ripple::SHAMapAddNode::duplicate
static SHAMapAddNode duplicate()
Definition
SHAMapAddNode.h:138
ripple::SHAMapAddNode::incInvalid
void incInvalid()
Definition
SHAMapAddNode.h:80
ripple::SHAMapAddNode::operator+=
SHAMapAddNode & operator+=(SHAMapAddNode const &n)
Definition
SHAMapAddNode.h:122
ripple::SHAMapAddNode::getGood
int getGood() const
Definition
SHAMapAddNode.h:104
ripple::SHAMapAddNode::incDuplicate
void incDuplicate()
Definition
SHAMapAddNode.h:92
ripple::SHAMapAddNode::mBad
int mBad
Definition
SHAMapAddNode.h:32
ripple::SHAMapAddNode::mDuplicate
int mDuplicate
Definition
SHAMapAddNode.h:33
ripple::SHAMapAddNode::isUseful
bool isUseful() const
Definition
SHAMapAddNode.h:116
ripple::SHAMapAddNode::isGood
bool isGood() const
Definition
SHAMapAddNode.h:132
ripple::SHAMapAddNode::isInvalid
bool isInvalid() const
Definition
SHAMapAddNode.h:110
ripple::SHAMapAddNode::invalid
static SHAMapAddNode invalid()
Definition
SHAMapAddNode.h:150
ripple::SHAMapAddNode::SHAMapAddNode
SHAMapAddNode()
Definition
SHAMapAddNode.h:70
ripple::SHAMapAddNode::mGood
int mGood
Definition
SHAMapAddNode.h:31
ripple::SHAMapAddNode::get
std::string get() const
Definition
SHAMapAddNode.h:156
ripple::SHAMapAddNode::useful
static SHAMapAddNode useful()
Definition
SHAMapAddNode.h:144
std::string::empty
T empty(T... args)
ripple
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition
algorithm.h:25
string
std::to_string
T to_string(T... args)
Generated by
1.9.8