PIVX Core
5.6.99
P2P Digital Currency
src
addrdb.h
Go to the documentation of this file.
1
// Copyright (c) 2009-2010 Satoshi Nakamoto
2
// Copyright (c) 2009-2015 The Bitcoin Core developers
3
// Copyright (c) 2020 The PIVX Core developers
4
// Distributed under the MIT software license, see the accompanying
5
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
6
7
#ifndef PIVX_ADDRDB_H
8
#define PIVX_ADDRDB_H
9
10
#include "
fs.h
"
11
#include "
serialize.h
"
12
#include "
streams.h
"
13
14
#include <string>
15
#include <map>
16
17
class
CSubNet
;
18
class
CAddrMan
;
19
class
CDataStream
;
20
21
typedef
enum
BanReason
22
{
23
BanReasonUnknown
= 0,
24
BanReasonNodeMisbehaving
= 1,
25
BanReasonManuallyAdded
= 2
26
}
BanReason
;
27
28
class
CBanEntry
29
{
30
public
:
31
static
const
int
CURRENT_VERSION
=1;
32
int
nVersion
;
33
int64_t
nCreateTime
;
34
int64_t
nBanUntil
;
35
uint8_t
banReason
;
36
37
CBanEntry
()
38
{
39
SetNull
();
40
}
41
42
explicit
CBanEntry
(int64_t nCreateTimeIn)
43
{
44
SetNull
();
45
nCreateTime
= nCreateTimeIn;
46
}
47
48
SERIALIZE_METHODS
(
CBanEntry
, obj) {
READWRITE
(obj.nVersion, obj.nCreateTime, obj.nBanUntil, obj.banReason); }
49
50
void
SetNull
()
51
{
52
nVersion
=
CBanEntry::CURRENT_VERSION
;
53
nCreateTime
= 0;
54
nBanUntil
= 0;
55
banReason
=
BanReasonUnknown
;
56
}
57
58
std::string
banReasonToString
()
const
59
{
60
switch
(
banReason
) {
61
case
BanReasonNodeMisbehaving
:
62
return
"node misbehaving"
;
63
case
BanReasonManuallyAdded
:
64
return
"manually added"
;
65
default
:
66
return
"unknown"
;
67
}
68
}
69
};
70
71
typedef
std::map<CSubNet, CBanEntry>
banmap_t
;
72
74
class
CAddrDB
75
{
76
private
:
77
fs::path
pathAddr
;
78
79
public
:
80
CAddrDB
();
81
bool
Write
(
const
CAddrMan
& addr);
82
bool
Read
(
CAddrMan
& addr);
83
static
bool
Read
(
CAddrMan
& addr,
CDataStream
& ssPeers);
84
};
85
87
class
CBanDB
88
{
89
private
:
90
fs::path
pathBanlist
;
91
public
:
92
CBanDB
();
93
bool
Write
(
const
banmap_t
& banSet);
94
bool
Read
(
banmap_t
& banSet);
95
};
96
97
#endif
// PIVX_ADDRDB_H
BanReason
BanReason
Definition:
addrdb.h:22
BanReasonManuallyAdded
@ BanReasonManuallyAdded
Definition:
addrdb.h:25
BanReasonUnknown
@ BanReasonUnknown
Definition:
addrdb.h:23
BanReasonNodeMisbehaving
@ BanReasonNodeMisbehaving
Definition:
addrdb.h:24
banmap_t
std::map< CSubNet, CBanEntry > banmap_t
Definition:
addrdb.h:71
CAddrDB
Access to the (IP) address database (peers.dat)
Definition:
addrdb.h:75
CAddrDB::pathAddr
fs::path pathAddr
Definition:
addrdb.h:77
CAddrDB::Write
bool Write(const CAddrMan &addr)
Definition:
addrdb.cpp:143
CAddrDB::Read
bool Read(CAddrMan &addr)
Definition:
addrdb.cpp:148
CAddrDB::CAddrDB
CAddrDB()
Definition:
addrdb.cpp:138
CAddrMan
Stochastical (IP) address manager.
Definition:
addrman.h:178
CBanDB
Access to the banlist database (banlist.dat)
Definition:
addrdb.h:88
CBanDB::Write
bool Write(const banmap_t &banSet)
Definition:
addrdb.cpp:128
CBanDB::pathBanlist
fs::path pathBanlist
Definition:
addrdb.h:90
CBanDB::Read
bool Read(banmap_t &banSet)
Definition:
addrdb.cpp:133
CBanDB::CBanDB
CBanDB()
Definition:
addrdb.cpp:123
CBanEntry
Definition:
addrdb.h:29
CBanEntry::banReasonToString
std::string banReasonToString() const
Definition:
addrdb.h:58
CBanEntry::CURRENT_VERSION
static const int CURRENT_VERSION
Definition:
addrdb.h:31
CBanEntry::nCreateTime
int64_t nCreateTime
Definition:
addrdb.h:33
CBanEntry::CBanEntry
CBanEntry()
Definition:
addrdb.h:37
CBanEntry::CBanEntry
CBanEntry(int64_t nCreateTimeIn)
Definition:
addrdb.h:42
CBanEntry::banReason
uint8_t banReason
Definition:
addrdb.h:35
CBanEntry::SERIALIZE_METHODS
SERIALIZE_METHODS(CBanEntry, obj)
Definition:
addrdb.h:48
CBanEntry::SetNull
void SetNull()
Definition:
addrdb.h:50
CBanEntry::nVersion
int nVersion
Definition:
addrdb.h:32
CBanEntry::nBanUntil
int64_t nBanUntil
Definition:
addrdb.h:34
CDataStream
Definition:
streams.h:409
CSubNet
Definition:
netaddress.h:453
fs.h
serialize.h
READWRITE
#define READWRITE(...)
Definition:
serialize.h:183
streams.h
Generated on Wed Apr 2 2025 00:40:26 for PIVX Core by
1.9.1