PIVX Core  5.6.99
P2P Digital Currency
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 {
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 
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  {
53  nCreateTime = 0;
54  nBanUntil = 0;
56  }
57 
58  std::string banReasonToString() const
59  {
60  switch (banReason) {
62  return "node misbehaving";
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
Definition: addrdb.h:22
@ BanReasonManuallyAdded
Definition: addrdb.h:25
@ BanReasonUnknown
Definition: addrdb.h:23
@ BanReasonNodeMisbehaving
Definition: addrdb.h:24
std::map< CSubNet, CBanEntry > banmap_t
Definition: addrdb.h:71
Access to the (IP) address database (peers.dat)
Definition: addrdb.h:75
fs::path pathAddr
Definition: addrdb.h:77
bool Write(const CAddrMan &addr)
Definition: addrdb.cpp:143
bool Read(CAddrMan &addr)
Definition: addrdb.cpp:148
CAddrDB()
Definition: addrdb.cpp:138
Stochastical (IP) address manager.
Definition: addrman.h:178
Access to the banlist database (banlist.dat)
Definition: addrdb.h:88
bool Write(const banmap_t &banSet)
Definition: addrdb.cpp:128
fs::path pathBanlist
Definition: addrdb.h:90
bool Read(banmap_t &banSet)
Definition: addrdb.cpp:133
CBanDB()
Definition: addrdb.cpp:123
Definition: addrdb.h:29
std::string banReasonToString() const
Definition: addrdb.h:58
static const int CURRENT_VERSION
Definition: addrdb.h:31
int64_t nCreateTime
Definition: addrdb.h:33
CBanEntry()
Definition: addrdb.h:37
CBanEntry(int64_t nCreateTimeIn)
Definition: addrdb.h:42
uint8_t banReason
Definition: addrdb.h:35
SERIALIZE_METHODS(CBanEntry, obj)
Definition: addrdb.h:48
void SetNull()
Definition: addrdb.h:50
int nVersion
Definition: addrdb.h:32
int64_t nBanUntil
Definition: addrdb.h:34
#define READWRITE(...)
Definition: serialize.h:183