Drop the AGPL license in favor of a source-available license. See the blog post [1] for details. [1] https://www.scylladb.com/2024/12/18/why-were-moving-to-a-source-available-license/
57 lines
1.6 KiB
C++
57 lines
1.6 KiB
C++
/*
|
|
* Copyright (C) 2018-present ScyllaDB
|
|
*
|
|
*/
|
|
|
|
/*
|
|
* SPDX-License-Identifier: LicenseRef-ScyllaDB-Source-Available-1.0
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "db/timeout_clock.hh"
|
|
#include "utils/updateable_value.hh"
|
|
|
|
namespace db { class config; }
|
|
|
|
class updateable_timeout_config;
|
|
|
|
/// timeout_config represents a snapshot of the options stored in it when
|
|
/// an instance of this class is created. so far this class is only used by
|
|
/// client_state. so either these classes are obliged to
|
|
/// update it by themselves, or they are fine with using the maybe-updated
|
|
/// options in the lifecycle of a client / connection even if some of these
|
|
/// options are changed whtn the client / connection is still alive.
|
|
struct timeout_config {
|
|
using duration_t = db::timeout_clock::duration;
|
|
|
|
duration_t read_timeout;
|
|
duration_t write_timeout;
|
|
duration_t range_read_timeout;
|
|
duration_t counter_write_timeout;
|
|
duration_t truncate_timeout;
|
|
duration_t cas_timeout;
|
|
duration_t other_timeout;
|
|
};
|
|
|
|
struct updateable_timeout_config {
|
|
using timeout_option_t = utils::updateable_value<uint32_t>;
|
|
|
|
timeout_option_t read_timeout_in_ms;
|
|
timeout_option_t write_timeout_in_ms;
|
|
timeout_option_t range_read_timeout_in_ms;
|
|
timeout_option_t counter_write_timeout_in_ms;
|
|
timeout_option_t truncate_timeout_in_ms;
|
|
timeout_option_t cas_timeout_in_ms;
|
|
timeout_option_t other_timeout_in_ms;
|
|
|
|
explicit updateable_timeout_config(const db::config& cfg);
|
|
|
|
timeout_config current_values() const;
|
|
};
|
|
|
|
|
|
using timeout_config_selector = db::timeout_clock::duration (timeout_config::*);
|
|
|
|
extern const timeout_config infinite_timeout_config;
|