26#ifndef ROUTER_SRC_REST_MRS_SRC_CONNECTION_CACHE_MANAGER_H_ 
   27#define ROUTER_SRC_REST_MRS_SRC_CONNECTION_CACHE_MANAGER_H_ 
  100                        const std::string &role = {})
 
  129            "mysql_rest_service_meta_provider"},
 
  130        callbacks_userdata_ro_{{
 
  134                               "mysql_rest_service_data_provider"},
 
  135        callbacks_metadata_rw_{
 
  137            "mysql_rest_service_meta_provider"},
 
  138        callbacks_userdata_rw_{{
 
  142                               "mysql_rest_service_data_provider"} {}
 
  144      : default_mysql_cache_instances_{10},
 
  145        cache_manager_metadata_ro_{callbacks_meta},
 
  146        cache_manager_userdata_ro_{callbacks_user} {}
 
  161        assert(
nullptr && 
"Shouldn't happen");
 
  167    if (obj.
parent_ == &cache_manager_metadata_ro_)
 
  169    else if (obj.
parent_ == &cache_manager_metadata_ro_)
 
  171    else if (obj.
parent_ == &cache_manager_metadata_rw_)
 
  173    else if (obj.
parent_ == &cache_manager_userdata_rw_)
 
  183        return cache_manager_metadata_ro_.get_instance(
wait);
 
  185        return cache_manager_userdata_ro_.get_instance(
wait);
 
  187        return cache_manager_metadata_rw_.get_instance(
wait);
 
  189        return cache_manager_userdata_rw_.get_instance(
wait);
 
  191        assert(
nullptr && 
"Shouldn't happen");
 
  196  std::unique_ptr<collector::CountedMySQLSession> clone_instance(
 
  203        change_to(instance, &cache_manager_metadata_ro_);
 
  206        change_to(instance, &cache_manager_userdata_ro_);
 
  209        change_to(instance, &cache_manager_metadata_rw_);
 
  212        change_to(instance, &cache_manager_userdata_rw_);
 
  221        return callbacks_metadata_ro_.get_connection_configuration();
 
  223        return callbacks_userdata_ro_.get_connection_configuration();
 
  225        return callbacks_metadata_rw_.get_connection_configuration();
 
  227        return callbacks_userdata_rw_.get_connection_configuration();
 
  229        assert(
nullptr && 
"Shouldn't happen");
 
  230        throw std::logic_error(
"internal error");
 
  235    if (
object.parent_) 
object.parent_->return_instance(
object);
 
  239    cache_manager_metadata_ro_.change_cache_object_limit(limit);
 
  240    cache_manager_userdata_ro_.change_cache_object_limit(limit);
 
  241    cache_manager_metadata_rw_.change_cache_object_limit(limit);
 
  242    cache_manager_userdata_rw_.change_cache_object_limit(limit);
 
  245  void configure(
const std::string &json_object);
 
  251      if (instance.
get()) {
 
  254        instance.
get()->change_user(
 
  255            cb->get_connection_configuration().mysql_user_,
 
  256            cb->get_connection_configuration().mysql_password_, 
"");
 
  267                                               default_mysql_cache_instances_};
 
  269                                               default_mysql_cache_instances_};
 
  271                                               default_mysql_cache_instances_};
 
  273                                               default_mysql_cache_instances_};
 
Definition: cache_manager.h:41
 
Object get()
Definition: cache_manager.h:79
 
CacheManager * parent_
Definition: cache_manager.h:108
 
Definition: cache_manager.h:116
 
CacheManager::Object Object
Definition: cache_manager.h:118
 
CountedMySQLSession * Object
Definition: cache_manager.h:38
 
Callbacks * get_callbacks() const
Definition: cache_manager.h:172
 
Definition: mysql_cache_manager.h:48
 
std::string mysql_user_
Definition: mysql_cache_manager.h:83
 
DestinationProvider * provider_
Definition: mysql_cache_manager.h:82
 
ConnectionConfiguration(MySQLConnection type, const mrs::Configuration &configuration)
Definition: mysql_cache_manager.h:52
 
mysql_harness::SecureString mysql_password_
Definition: mysql_cache_manager.h:84
 
MySQLConnection type_
Definition: mysql_cache_manager.h:81
 
ConnectionConfiguration()=default
 
bool is_rw() const
Definition: mysql_cache_manager.h:71
 
Definition: counted_mysql_session.h:38
 
Definition: destination_provider.h:37
 
Definition: mysql_cache_manager.h:96
 
bool object_retrived_from_cache(Object) override
Definition: mysql_cache_manager.cc:143
 
bool is_default_server(Object &) const
Definition: mysql_cache_manager.cc:170
 
ConnectionParameters new_connection_params(bool wait)
Definition: mysql_cache_manager.cc:198
 
bool object_before_cache(Object, bool dirty) override
Definition: mysql_cache_manager.cc:126
 
void object_remove(Object) override
Definition: mysql_cache_manager.cc:121
 
int node_rount_robin_
Definition: mysql_cache_manager.h:120
 
void object_restore_defaults(Object &, bool dirty)
Definition: mysql_cache_manager.cc:155
 
bool is_default_user(Object &) const
Definition: mysql_cache_manager.cc:181
 
MysqlCacheCallbacks(const ConnectionConfiguration &configuration=ConnectionConfiguration{}, const std::string &role={})
Definition: mysql_cache_manager.h:98
 
Object object_allocate(bool wait) override
Definition: mysql_cache_manager.cc:103
 
const ConnectionConfiguration & get_connection_configuration() const
Definition: mysql_cache_manager.cc:193
 
ConnectionConfiguration connection_configuration_
Definition: mysql_cache_manager.h:118
 
std::string role_
Definition: mysql_cache_manager.h:119
 
Definition: mysql_cache_manager.h:87
 
virtual CachedObject get_instance(collector::MySQLConnection type, bool wait)
Definition: mysql_cache_manager.h:179
 
uint32_t default_mysql_cache_instances_
Definition: mysql_cache_manager.h:261
 
virtual void change_instance(CachedObject &instance, collector::MySQLConnection type)
Definition: mysql_cache_manager.h:199
 
static void change_to(CachedObject &instance, MySqlCacheManager *m)
Definition: mysql_cache_manager.h:248
 
virtual collector::MySQLConnection get_type(const CachedObject &obj)
Definition: mysql_cache_manager.h:166
 
MysqlCacheCallbacks callbacks_userdata_ro_
Definition: mysql_cache_manager.h:263
 
MySqlCacheManager::Object Object
Definition: mysql_cache_manager.h:94
 
virtual void change_cache_object_limit(uint32_t limit)
Definition: mysql_cache_manager.h:238
 
virtual ~MysqlCacheManager()=default
 
MysqlCacheCallbacks callbacks_metadata_ro_
Definition: mysql_cache_manager.h:262
 
const ConnectionConfiguration & get_connection_configuration(collector::MySQLConnection type) const
Definition: mysql_cache_manager.h:217
 
MysqlCacheManager(const mrs::Configuration &configuration)
Definition: mysql_cache_manager.h:124
 
virtual void return_instance(CachedObject &object)
Definition: mysql_cache_manager.h:234
 
MysqlCacheManager(Callbacks *callbacks_meta, Callbacks *callbacks_user)
Definition: mysql_cache_manager.h:143
 
virtual CachedObject get_empty(collector::MySQLConnection type, bool wait)
Definition: mysql_cache_manager.h:150
 
MysqlCacheCallbacks callbacks_metadata_rw_
Definition: mysql_cache_manager.h:264
 
MySQLSession::ConnectionParameters ConnectionParameters
Definition: mysql_cache_manager.h:90
 
MysqlCacheCallbacks callbacks_userdata_rw_
Definition: mysql_cache_manager.h:265
 
Definition: configuration.h:49
 
Null-terminated string which is securely wiped on destruction.
Definition: secure_string.h:59
 
Definition: cache_manager.h:33
 
MySQLConnection
Definition: mysql_cache_manager.h:41
 
@ kMySQLConnectionUserdataRW
Definition: mysql_cache_manager.h:45
 
@ kMySQLConnectionMetadataRO
Definition: mysql_cache_manager.h:42
 
@ kMySQLConnectionMetadataRW
Definition: mysql_cache_manager.h:44
 
@ kMySQLConnectionUserdataRO
Definition: mysql_cache_manager.h:43
 
static bool cb(unsigned long long new_value)
Definition: option_usage.cc:45
 
collector::CountedMySQLSession::ConnectionParameters ConnectionParameters
Definition: query_retry_on_ro.cc:38
 
collector::MysqlCacheManager::CachedObject CachedObject
Definition: handler_db_object_function.cc:55
 
static int wait(mysql_cond_t *that, mysql_mutex_t *mutex_arg, const char *, unsigned int)
Definition: mysql_cond_v1_native.cc:62
 
static mysql_service_status_t get(THD **thd) noexcept
Definition: mysql_current_thread_reader_all_empty.cc:31
 
required string configuration
Definition: replication_asynchronous_connection_failover.proto:49
 
required string type
Definition: replication_group_member_actions.proto:34
 
Definition: counted_mysql_session.h:41