mirror of
https://github.com/scylladb/scylladb.git
synced 2026-04-27 03:45:11 +00:00
gossip: Move code from gms/gossip_digest_ack2.hh to source file
This commit is contained in:
@@ -32,4 +32,39 @@ std::ostream& operator<<(std::ostream& os, const gossip_digest_ack2& ack2) {
|
||||
return os << "}";
|
||||
}
|
||||
|
||||
void gossip_digest_ack2::serialize(bytes::iterator& out) const {
|
||||
// 1) Map size
|
||||
serialize_int32(out, int32_t(_map.size()));
|
||||
// 2) Map contents
|
||||
for (auto& entry : _map) {
|
||||
const inet_address& ep = entry.first;
|
||||
const endpoint_state& st = entry.second;
|
||||
ep.serialize(out);
|
||||
st.serialize(out);
|
||||
}
|
||||
}
|
||||
|
||||
gossip_digest_ack2 gossip_digest_ack2::deserialize(bytes_view& v) {
|
||||
// 1) Map size
|
||||
int32_t map_size = read_simple<int32_t>(v);
|
||||
// 2) Map contents
|
||||
std::map<inet_address, endpoint_state> _map;
|
||||
for (int32_t i = 0; i < map_size; ++i) {
|
||||
inet_address ep = inet_address::deserialize(v);
|
||||
endpoint_state st = endpoint_state::deserialize(v);
|
||||
_map.emplace(std::move(ep), std::move(st));
|
||||
}
|
||||
return gossip_digest_ack2(std::move(_map));
|
||||
}
|
||||
|
||||
size_t gossip_digest_ack2::serialized_size() const {
|
||||
size_t size = serialize_int32_size;
|
||||
for (auto& entry : _map) {
|
||||
const inet_address& ep = entry.first;
|
||||
const endpoint_state& st = entry.second;
|
||||
size += ep.serialized_size() + st.serialized_size();
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
||||
} // namespace gms
|
||||
|
||||
@@ -49,40 +49,11 @@ public:
|
||||
}
|
||||
|
||||
// The following replaces GossipDigestAck2Serializer from the Java code
|
||||
void serialize(bytes::iterator& out) const {
|
||||
// 1) Map size
|
||||
serialize_int32(out, int32_t(_map.size()));
|
||||
// 2) Map contents
|
||||
for (auto& entry : _map) {
|
||||
const inet_address& ep = entry.first;
|
||||
const endpoint_state& st = entry.second;
|
||||
ep.serialize(out);
|
||||
st.serialize(out);
|
||||
}
|
||||
}
|
||||
void serialize(bytes::iterator& out) const;
|
||||
|
||||
static gossip_digest_ack2 deserialize(bytes_view& v) {
|
||||
// 1) Map size
|
||||
int32_t map_size = read_simple<int32_t>(v);
|
||||
// 2) Map contents
|
||||
std::map<inet_address, endpoint_state> _map;
|
||||
for (int32_t i = 0; i < map_size; ++i) {
|
||||
inet_address ep = inet_address::deserialize(v);
|
||||
endpoint_state st = endpoint_state::deserialize(v);
|
||||
_map.emplace(std::move(ep), std::move(st));
|
||||
}
|
||||
return gossip_digest_ack2(std::move(_map));
|
||||
}
|
||||
static gossip_digest_ack2 deserialize(bytes_view& v);
|
||||
|
||||
size_t serialized_size() const {
|
||||
size_t size = serialize_int32_size;
|
||||
for (auto& entry : _map) {
|
||||
const inet_address& ep = entry.first;
|
||||
const endpoint_state& st = entry.second;
|
||||
size += ep.serialized_size() + st.serialized_size();
|
||||
}
|
||||
return size;
|
||||
}
|
||||
size_t serialized_size() const;
|
||||
|
||||
friend std::ostream& operator<<(std::ostream& os, const gossip_digest_ack2& ack2);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user