26#ifndef MYSQLROUTER_METADATA_CACHE_INCLUDED
27#define MYSQLROUTER_METADATA_CACHE_INCLUDED
38#include <rapidjson/document.h>
73 :
std::runtime_error(what_arg) {}
93 const uint64_t view_id) = 0;
205 std::chrono::milliseconds
ttl;
260 const std::string &clusterset_id,
268 bool use_cluster_notifications =
false,
const uint64_t view_id = 0,
269 bool close_connection_after_refresh =
false) = 0;
281 virtual
void cache_start() = 0;
286 virtual
void cache_stop() noexcept = 0;
312 virtual
bool wait_primary_failover(const
std::
string &primary_server_uuid,
339 virtual
void add_acceptor_handler_listener(
348 virtual
void remove_acceptor_handler_listener(
356 virtual
void add_md_refresh_listener(
365 virtual
void remove_md_refresh_listener(
379 get_rest_user_auth_data(const
std::
string &username) const = 0;
385 virtual
void enable_fetch_auth_metadata() = 0;
390 virtual
void force_cache_update() = 0;
400 virtual
void check_auth_metadata_timers() const = 0;
405 virtual
void handle_sockets_acceptors_on_md_refresh() = 0;
413 const
std::
string &)>;
422 virtual
void add_routing_guidelines_update_callbacks(
426 virtual
void clear_routing_guidelines_update_callbacks() = 0;
435 virtual
void add_router_info_update_callback(
438 virtual
void clear_router_info_update_callback() = 0;
460 virtual std::chrono::milliseconds
ttl()
const = 0;
466 const bool use_cluster_notifications,
unsigned view_id)>;
480 const unsigned view_id);
487 const unsigned router_id,
const std::string &clusterset_id,
494 size_t thread_stack_size,
bool use_cluster_notifications,
495 const uint64_t view_id,
496 bool close_connection_after_refresh)
override;
500 void instance_name(
const std::string &inst_name)
override;
501 std::string instance_name()
const override;
504 std::chrono::milliseconds ttl()
const override;
507 void cache_start()
override;
509 void cache_stop() noexcept override;
514 bool wait_primary_failover(const
std::
string &primary_server_uuid,
521 void add_acceptor_handler_listener(
524 void remove_acceptor_handler_listener(
527 void add_md_refresh_listener(
530 void remove_md_refresh_listener(
533 RefreshStatus get_refresh_status() override;
536 get_rest_user_auth_data(const
std::
string &user) const override;
538 void enable_fetch_auth_metadata() override;
539 void force_cache_update() override;
540 void check_auth_metadata_timers() const override;
542 void handle_sockets_acceptors_on_md_refresh() override;
544 void add_routing_guidelines_update_callbacks(
545 update_routing_guidelines_callback_t,
546 on_routing_guidelines_change_callback_t) override;
548 void clear_routing_guidelines_update_callbacks() override;
550 void add_router_info_update_callback(
551 update_router_info_callback_t clb) override;
553 void clear_router_info_update_callback() override;
556 instance_factory_ = std::move(cb);
567 std::atomic<bool> is_initialized_{
false};
Monitor pattern.
Definition: monitor.h:39
static constexpr int kDefaultReadTimeout
Definition: mysql_session.h:157
static constexpr int kDefaultConnectTimeout
Definition: mysql_session.h:156
Definition: cluster_metadata.h:135
Define rapidjson::SizeType to be std::uint64_t.
static bool timeout(bool(*wait_condition)())
Timeout function.
Definition: log0meb.cc:498
static const size_t kDefaultStackSizeInKiloBytes
Definition: mysql_router_thread.h:44
ClusterType
Definition: cluster_metadata.h:116
Definition: my_rapidjson_size_t.h:38
Definition: routing_guidelines_datatypes.h:30
Definition: gcs_xcom_synode.h:64
SSL connection related options.
Definition: datatypes.h:34
double seconds()
Definition: task.cc:314