query_options: Add constructor for batch mode options (multi-level)

Added explicit move constructors as well as prohibit copy to help
disambiguate the constructor delegation
This commit is contained in:
Calle Wilund
2015-09-15 09:35:36 +02:00
parent 27421d55bf
commit 7f3ce3935e
2 changed files with 24 additions and 0 deletions

View File

@@ -71,6 +71,17 @@ query_options::query_options(db::consistency_level consistency,
{
}
query_options::query_options(query_options&& o, std::vector<std::vector<bytes_view_opt>> value_views)
: query_options(std::move(o))
{
std::vector<query_options> tmp;
tmp.reserve(value_views.size());
std::transform(value_views.begin(), value_views.end(), std::back_inserter(tmp), [this](auto& vals) {
return query_options(_consistency, {}, vals, _skip_metadata, _options, _protocol_version, _serialization_format);
});
_batch_options = std::move(tmp);
}
query_options::query_options(std::vector<bytes_opt> values)
: query_options(
db::consistency_level::ONE,

View File

@@ -61,6 +61,9 @@ private:
serialization_format _serialization_format;
std::experimental::optional<std::vector<query_options>> _batch_options;
public:
query_options(query_options&&) = default;
query_options(const query_options&) = delete;
explicit query_options(db::consistency_level consistency,
std::experimental::optional<std::vector<sstring_view>> names,
std::vector<bytes_opt> values,
@@ -77,6 +80,16 @@ public:
int32_t protocol_version,
serialization_format sf);
explicit query_options(db::consistency_level consistency,
std::vector<std::vector<bytes_view_opt>> value_views,
bool skip_metadata,
specific_options options,
int32_t protocol_version,
serialization_format sf);
// Batch query_options constructor
explicit query_options(query_options&&, std::vector<std::vector<bytes_view_opt>> value_views);
// It can't be const because of prepare()
static thread_local query_options DEFAULT;