mirror of
https://github.com/dashpay/dash.git
synced 2024-12-27 04:52:59 +01:00
19a2d668cf
d59a518
Use fixed preallocation instead of costly GetSerializeSize (Pieter Wuille)25a211a
Add optimized CSizeComputer serializers (Pieter Wuille)a2929a2
Make CSerAction's ForRead() constexpr (Pieter Wuille)a603925
Avoid -Wshadow errors (Pieter Wuille)5284721
Get rid of nType and nVersion (Pieter Wuille)657e05a
Make GetSerializeSize a wrapper on top of CSizeComputer (Pieter Wuille)fad9b66
Make nType and nVersion private and sometimes const (Pieter Wuille)c2c5d42
Make streams' read and write return void (Pieter Wuille)50e8a9c
Remove unused ReadVersion and WriteVersion (Pieter Wuille)
103 lines
2.1 KiB
C++
103 lines
2.1 KiB
C++
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
|
// Copyright (c) 2009-2015 The Bitcoin Core developers
|
|
// Distributed under the MIT software license, see the accompanying
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
#ifndef BITCOIN_ADDRDB_H
|
|
#define BITCOIN_ADDRDB_H
|
|
|
|
#include "serialize.h"
|
|
|
|
#include <string>
|
|
#include <map>
|
|
#include <boost/filesystem/path.hpp>
|
|
|
|
class CSubNet;
|
|
class CAddrMan;
|
|
class CDataStream;
|
|
|
|
typedef enum BanReason
|
|
{
|
|
BanReasonUnknown = 0,
|
|
BanReasonNodeMisbehaving = 1,
|
|
BanReasonManuallyAdded = 2
|
|
} BanReason;
|
|
|
|
class CBanEntry
|
|
{
|
|
public:
|
|
static const int CURRENT_VERSION=1;
|
|
int nVersion;
|
|
int64_t nCreateTime;
|
|
int64_t nBanUntil;
|
|
uint8_t banReason;
|
|
|
|
CBanEntry()
|
|
{
|
|
SetNull();
|
|
}
|
|
|
|
CBanEntry(int64_t nCreateTimeIn)
|
|
{
|
|
SetNull();
|
|
nCreateTime = nCreateTimeIn;
|
|
}
|
|
|
|
ADD_SERIALIZE_METHODS;
|
|
|
|
template <typename Stream, typename Operation>
|
|
inline void SerializationOp(Stream& s, Operation ser_action) {
|
|
READWRITE(this->nVersion);
|
|
READWRITE(nCreateTime);
|
|
READWRITE(nBanUntil);
|
|
READWRITE(banReason);
|
|
}
|
|
|
|
void SetNull()
|
|
{
|
|
nVersion = CBanEntry::CURRENT_VERSION;
|
|
nCreateTime = 0;
|
|
nBanUntil = 0;
|
|
banReason = BanReasonUnknown;
|
|
}
|
|
|
|
std::string banReasonToString()
|
|
{
|
|
switch (banReason) {
|
|
case BanReasonNodeMisbehaving:
|
|
return "node misbehaving";
|
|
case BanReasonManuallyAdded:
|
|
return "manually added";
|
|
default:
|
|
return "unknown";
|
|
}
|
|
}
|
|
};
|
|
|
|
typedef std::map<CSubNet, CBanEntry> banmap_t;
|
|
|
|
/** Access to the (IP) address database (peers.dat) */
|
|
class CAddrDB
|
|
{
|
|
private:
|
|
boost::filesystem::path pathAddr;
|
|
public:
|
|
CAddrDB();
|
|
bool Write(const CAddrMan& addr);
|
|
bool Read(CAddrMan& addr);
|
|
bool Read(CAddrMan& addr, CDataStream& ssPeers);
|
|
};
|
|
|
|
/** Access to the banlist database (banlist.dat) */
|
|
class CBanDB
|
|
{
|
|
private:
|
|
boost::filesystem::path pathBanlist;
|
|
public:
|
|
CBanDB();
|
|
bool Write(const banmap_t& banSet);
|
|
bool Read(banmap_t& banSet);
|
|
};
|
|
|
|
#endif // BITCOIN_ADDRDB_H
|