mirror of
https://github.com/scylladb/scylladb.git
synced 2026-05-23 08:12:08 +00:00
90 lines
2.0 KiB
C++
90 lines
2.0 KiB
C++
/*
|
|
*
|
|
* Modified by ScyllaDB
|
|
* Copyright (C) 2015-present ScyllaDB
|
|
*/
|
|
|
|
/*
|
|
* SPDX-License-Identifier: (LicenseRef-ScyllaDB-Source-Available-1.1 and Apache-2.0)
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <seastar/core/sstring.hh>
|
|
#include <fmt/core.h>
|
|
#include "gms/gossip_digest.hh"
|
|
#include "utils/chunked_vector.hh"
|
|
#include "utils/UUID.hh"
|
|
|
|
namespace gms {
|
|
|
|
/**
|
|
* This is the first message that gets sent out as a start of the Gossip protocol in a
|
|
* round.
|
|
*/
|
|
class gossip_digest_syn {
|
|
private:
|
|
sstring _cluster_id;
|
|
sstring _partioner;
|
|
utils::chunked_vector<gossip_digest> _digests;
|
|
utils::UUID _group0_id;
|
|
utils::UUID _recovery_leader;
|
|
public:
|
|
gossip_digest_syn() {
|
|
}
|
|
|
|
gossip_digest_syn(
|
|
sstring id, sstring p, utils::chunked_vector<gossip_digest> digests,
|
|
utils::UUID group0_id, utils::UUID recovery_leader)
|
|
: _cluster_id(std::move(id))
|
|
, _partioner(std::move(p))
|
|
, _digests(std::move(digests))
|
|
, _group0_id(std::move(group0_id))
|
|
, _recovery_leader(std::move(recovery_leader)) {
|
|
}
|
|
|
|
sstring cluster_id() const {
|
|
return _cluster_id;
|
|
}
|
|
|
|
utils::UUID group0_id() const {
|
|
return _group0_id;
|
|
}
|
|
|
|
utils::UUID recovery_leader() const {
|
|
return _recovery_leader;
|
|
}
|
|
|
|
sstring partioner() const {
|
|
return _partioner;
|
|
}
|
|
|
|
sstring get_cluster_id() const {
|
|
return cluster_id();
|
|
}
|
|
|
|
utils::UUID get_group0_id() const {
|
|
return group0_id();
|
|
}
|
|
|
|
utils::UUID get_recovery_leader() const {
|
|
return _recovery_leader;
|
|
}
|
|
|
|
sstring get_partioner() const {
|
|
return partioner();
|
|
}
|
|
|
|
const utils::chunked_vector<gossip_digest>& get_gossip_digests() const {
|
|
return _digests;
|
|
}
|
|
|
|
friend fmt::formatter<gossip_digest_syn>;
|
|
};
|
|
|
|
}
|
|
|
|
template <> struct fmt::formatter<gms::gossip_digest_syn> : fmt::formatter<string_view> {
|
|
auto format(const gms::gossip_digest_syn&, fmt::format_context& ctx) const -> decltype(ctx.out());
|
|
};
|