|
20 | 20 |
|
21 | 21 | #include <cstdint>
|
22 | 22 |
|
23 |
| -CBanEntry::CBanEntry(const UniValue& json) |
24 |
| - : nVersion(json["version"].get_int()), nCreateTime(json["ban_created"].get_int64()), |
25 |
| - nBanUntil(json["banned_until"].get_int64()) |
26 |
| -{ |
27 |
| -} |
28 |
| - |
29 |
| -UniValue CBanEntry::ToJson() const |
30 |
| -{ |
31 |
| - UniValue json(UniValue::VOBJ); |
32 |
| - json.pushKV("version", nVersion); |
33 |
| - json.pushKV("ban_created", nCreateTime); |
34 |
| - json.pushKV("banned_until", nBanUntil); |
35 |
| - return json; |
36 |
| -} |
37 |
| - |
38 | 23 | namespace {
|
39 |
| - |
40 |
| -static const char* BANMAN_JSON_ADDR_KEY = "address"; |
41 |
| - |
42 |
| -/** |
43 |
| - * Convert a `banmap_t` object to a JSON array. |
44 |
| - * @param[in] bans Bans list to convert. |
45 |
| - * @return a JSON array, similar to the one returned by the `listbanned` RPC. Suitable for |
46 |
| - * passing to `BanMapFromJson()`. |
47 |
| - */ |
48 |
| -UniValue BanMapToJson(const banmap_t& bans) |
49 |
| -{ |
50 |
| - UniValue bans_json(UniValue::VARR); |
51 |
| - for (const auto& it : bans) { |
52 |
| - const auto& address = it.first; |
53 |
| - const auto& ban_entry = it.second; |
54 |
| - UniValue j = ban_entry.ToJson(); |
55 |
| - j.pushKV(BANMAN_JSON_ADDR_KEY, address.ToString()); |
56 |
| - bans_json.push_back(j); |
57 |
| - } |
58 |
| - return bans_json; |
59 |
| -} |
60 |
| - |
61 |
| -/** |
62 |
| - * Convert a JSON array to a `banmap_t` object. |
63 |
| - * @param[in] bans_json JSON to convert, must be as returned by `BanMapToJson()`. |
64 |
| - * @param[out] bans Bans list to create from the JSON. |
65 |
| - * @throws std::runtime_error if the JSON does not have the expected fields or they contain |
66 |
| - * unparsable values. |
67 |
| - */ |
68 |
| -void BanMapFromJson(const UniValue& bans_json, banmap_t& bans) |
69 |
| -{ |
70 |
| - for (const auto& ban_entry_json : bans_json.getValues()) { |
71 |
| - CSubNet subnet; |
72 |
| - const auto& subnet_str = ban_entry_json[BANMAN_JSON_ADDR_KEY].get_str(); |
73 |
| - if (!LookupSubNet(subnet_str, subnet)) { |
74 |
| - throw std::runtime_error( |
75 |
| - strprintf("Cannot parse banned address or subnet: %s", subnet_str)); |
76 |
| - } |
77 |
| - bans.insert_or_assign(subnet, CBanEntry{ban_entry_json}); |
78 |
| - } |
79 |
| -} |
80 |
| - |
81 | 24 | template <typename Stream, typename Data>
|
82 | 25 | bool SerializeDB(Stream& stream, const Data& data)
|
83 | 26 | {
|
@@ -228,29 +171,21 @@ bool CBanDB::Read(banmap_t& banSet)
|
228 | 171 | return true;
|
229 | 172 | }
|
230 | 173 |
|
231 |
| -CAddrDB::CAddrDB() |
232 |
| -{ |
233 |
| - pathAddr = GetDataDir() / "peers.dat"; |
234 |
| -} |
235 |
| - |
236 |
| -bool CAddrDB::Write(const CAddrMan& addr) |
| 174 | +bool DumpPeerAddresses(const ArgsManager& args, const CAddrMan& addr) |
237 | 175 | {
|
| 176 | + const auto pathAddr = GetDataDir() / "peers.dat"; |
238 | 177 | return SerializeFileDB("peers", pathAddr, addr, CLIENT_VERSION);
|
239 | 178 | }
|
240 | 179 |
|
241 |
| -bool CAddrDB::Read(CAddrMan& addr) |
| 180 | +bool ReadPeerAddresses(const ArgsManager& args, CAddrMan& addr) |
242 | 181 | {
|
| 182 | + const auto pathAddr = GetDataDir() / "peers.dat"; |
243 | 183 | return DeserializeFileDB(pathAddr, addr, CLIENT_VERSION);
|
244 | 184 | }
|
245 | 185 |
|
246 |
| -bool CAddrDB::Read(CAddrMan& addr, CDataStream& ssPeers) |
| 186 | +bool ReadFromStream(CAddrMan& addr, CDataStream& ssPeers) |
247 | 187 | {
|
248 |
| - bool ret = DeserializeDB(ssPeers, addr, false); |
249 |
| - if (!ret) { |
250 |
| - // Ensure addrman is left in a clean state |
251 |
| - addr.Clear(); |
252 |
| - } |
253 |
| - return ret; |
| 188 | + return DeserializeDB(ssPeers, addr, false); |
254 | 189 | }
|
255 | 190 |
|
256 | 191 | void DumpAnchors(const fs::path& anchors_db_path, const std::vector<CAddress>& anchors)
|
|
0 commit comments