47 template <
class T,
class Archive>
55 template <
class T,
class Archive>
61 template <
class Archive,
class ver_type>
64 static constexpr const typename Archive::is_saving is_saving{};
86 throw std::runtime_error(
"Unsupported network address type");
89 template <
class Archive,
class ver_type>
98 if (!
typename Archive::is_saving())
102 template <
class Archive,
class ver_type>
103 inline void serialize(Archive &
a, boost::asio::ip::address_v6& v6,
const ver_type ver)
105 if (
typename Archive::is_saving())
107 auto bytes = v6.to_bytes();
108 for (
auto &e: bytes)
a & e;
112 boost::asio::ip::address_v6::bytes_type bytes;
113 for (
auto &e: bytes)
a & e;
114 v6 = boost::asio::ip::address_v6(bytes);
118 template <
class Archive,
class ver_type>
121 boost::asio::ip::address_v6 ip{na.
ip()};
125 if (!
typename Archive::is_saving())
130 template <
class Archive,
class ver_type>
133 const size_t length = std::strlen(na.
host_str());
144 template <
class Archive,
class ver_type>
147 const size_t length = std::strlen(na.
host_str());
158 template <
class Archive,
class ver_type>
167 if (length > buffer_size)
170 char host[buffer_size] = {0};
171 a.load_binary(host, length);
172 host[
sizeof(host) - 1] = 0;
180 template <
class Archive,
class ver_type>
189 if (length > buffer_size)
192 char host[buffer_size] = {0};
193 a.load_binary(host, length);
194 host[
sizeof(host) - 1] = 0;
202 template <
class Archive,
class ver_type>
205 boost::serialization::split_free(
a, na, ver);
208 template <
class Archive,
class ver_type>
211 boost::serialization::split_free(
a, na, ver);
214 template <
class Archive,
class ver_type>
222 if (!
typename Archive::is_saving())
229 if (!
typename Archive::is_saving())
236 if (!
typename Archive::is_saving())
243 template <
class Archive,
class ver_type>
Definition net_utils_base.h:69
static constexpr address_type get_type_id() noexcept
Definition net_utils_base.h:92
constexpr uint16_t port() const noexcept
Definition net_utils_base.h:87
constexpr uint32_t ip() const noexcept
Definition net_utils_base.h:86
Definition net_utils_base.h:172
static constexpr address_type get_type_id() noexcept
Definition net_utils_base.h:198
uint16_t port() const noexcept
Definition net_utils_base.h:193
boost::asio::ip::address_v6 ip() const noexcept
Definition net_utils_base.h:192
Definition net_utils_base.h:225
address_type get_type_id() const
Definition net_utils_base.h:316
const Type & as() const
Definition net_utils_base.h:320
b32 i2p address; internal format not condensed/decoded.
Definition i2p_address.h:52
std::uint16_t port() const noexcept
Definition i2p_address.h:106
static i2p_address unknown() noexcept
Definition i2p_address.h:69
static constexpr epee::net_utils::address_type get_type_id() noexcept
Definition i2p_address.h:111
static constexpr std::size_t buffer_size() noexcept
Definition i2p_address.h:60
static expect< i2p_address > make(boost::string_ref address)
Definition i2p_address.cpp:105
const char * host_str() const noexcept
Definition i2p_address.h:103
static const char * unknown_str() noexcept
Definition i2p_address.cpp:93
Tor onion address; internal format not condensed/decoded.
Definition tor_address.h:53
static expect< tor_address > make(boost::string_ref address, std::uint16_t default_port=0)
Definition tor_address.cpp:109
static constexpr std::size_t buffer_size() noexcept
Definition tor_address.h:62
static const char * unknown_str() noexcept
Definition tor_address.cpp:96
static constexpr epee::net_utils::address_type get_type_id() noexcept
Definition tor_address.h:113
const char * host_str() const noexcept
Definition tor_address.h:105
std::uint16_t port() const noexcept
Definition tor_address.h:108
static tor_address unknown() noexcept
Definition tor_address.h:71
bool do_serialize(Archive< false > &ar, std::vector< T > &v)
Definition containers.h:109
#define MONERO_THROW(code, msg)
Definition expect.h:67
#define MONERO_UNWRAP(...)
Definition expect.h:61
#define SWAP32LE
Definition int-util.h:277
void load(Archive &a, std::unordered_map< h_key, hval > &x, const boost::serialization::version_type ver)
Definition unordered_containers_boost_serialization.h:54
void save(Archive &a, const std::unordered_map< h_key, hval > &x, const boost::serialization::version_type ver)
Definition unordered_containers_boost_serialization.h:42
Definition portable_binary_archive.hpp:29
address_type
Definition enums.h:40
@ invalid
Definition enums.h:42
@ invalid_tor_address
Invalid base32 or length.
Definition error.h:48
@ invalid_i2p_address
Definition error.h:45
Definition binary_utils.h:36
bool serialize(Archive &ar, T &v)
Definition serialization.h:294
BOOST_CLASS_VERSION(nodetool::peerlist_types, nodetool::CURRENT_PEERLIST_STORAGE_ARCHIVE_VER)
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
Definition pointer.h:1124
unsigned short uint16_t
Definition stdint.h:125
unsigned int uint32_t
Definition stdint.h:126
unsigned char uint8_t
Definition stdint.h:124
int64_t first_seen
Definition p2p_protocol_defs.h:106
AddressType adr
Definition p2p_protocol_defs.h:104
peerid_type id
Definition p2p_protocol_defs.h:105
uint32_t pruning_seed
Definition p2p_protocol_defs.h:77
AddressType adr
Definition p2p_protocol_defs.h:74
uint16_t rpc_port
Definition p2p_protocol_defs.h:78
peerid_type id
Definition p2p_protocol_defs.h:75
int64_t last_seen
Definition p2p_protocol_defs.h:76
uint32_t rpc_credits_per_hash
Definition p2p_protocol_defs.h:79