storage_proxy: unnest coordinator_query_result

Nested classes cannot be forward declared, and
storage_proxy::coordinator_query_result is used in pagers, where
we'd like to forward-declare it. Unnest it and introduce an alias
for compatibility.
This commit is contained in:
Avi Kivity
2021-04-20 20:32:32 +03:00
parent 14a4173f50
commit cdf30524f3
2 changed files with 16 additions and 13 deletions

View File

@@ -157,7 +157,7 @@ protected:
template<typename Base>
class query_result_visitor;
future<service::storage_proxy::coordinator_query_result>
future<service::storage_proxy_coordinator_query_result>
do_fetch_page(uint32_t page_size, gc_clock::time_point now, db::timeout_clock::time_point timeout);
template<typename Visitor>

View File

@@ -151,6 +151,20 @@ public:
const query::partition_slice& slice, api::timestamp_type ts) = 0;
};
struct storage_proxy_coordinator_query_result {
foreign_ptr<lw_shared_ptr<query::result>> query_result;
replicas_per_token_range last_replicas;
db::read_repair_decision read_repair_decision;
storage_proxy_coordinator_query_result(foreign_ptr<lw_shared_ptr<query::result>> query_result,
replicas_per_token_range last_replicas = {},
db::read_repair_decision read_repair_decision = db::read_repair_decision::NONE)
: query_result(std::move(query_result))
, last_replicas(std::move(last_replicas))
, read_repair_decision(std::move(read_repair_decision)) {
}
};
class storage_proxy : public seastar::async_sharded_service<storage_proxy>, public peering_sharded_service<storage_proxy>, public service::endpoint_lifecycle_subscriber {
public:
enum class error : uint8_t {
@@ -224,19 +238,8 @@ public:
}
};
struct coordinator_query_result {
foreign_ptr<lw_shared_ptr<query::result>> query_result;
replicas_per_token_range last_replicas;
db::read_repair_decision read_repair_decision;
using coordinator_query_result = storage_proxy_coordinator_query_result;
coordinator_query_result(foreign_ptr<lw_shared_ptr<query::result>> query_result,
replicas_per_token_range last_replicas = {},
db::read_repair_decision read_repair_decision = db::read_repair_decision::NONE)
: query_result(std::move(query_result))
, last_replicas(std::move(last_replicas))
, read_repair_decision(std::move(read_repair_decision)) {
}
};
// Holds a list of endpoints participating in CAS request, for a given
// consistency level, token, and state of joining/leaving nodes.
struct paxos_participants {