25#ifndef MYSQL_HARNESS_DIMANAGER_INCLUDED
26#define MYSQL_HARNESS_DIMANAGER_INCLUDED
28#include "harness_export.h"
361class RandomGeneratorInterface;
387 static DIM &instance();
403 factory_LoggingRegistry_ = factory;
404 deleter_LoggingRegistry_ = deleter;
413 factory_RandomGenerator_ = factory;
414 deleter_RandomGenerator_ = deleter;
422 factory_Config_ = factory;
423 deleter_Config_ = deleter;
431 factory_DynamicState_ = factory;
432 deleter_DynamicState_ = deleter;
441 return get_external_generic(instance_LoggingRegistry_,
442 factory_LoggingRegistry_,
443 deleter_LoggingRegistry_);
448 return get_generic(factory_RandomGenerator_, deleter_RandomGenerator_);
453 return get_external_generic(instance_Config_, factory_Config_,
460 return get_external_generic(instance_DynamicState_, factory_DynamicState_,
461 deleter_DynamicState_);
471 factory_LoggingRegistry_;
478 factory_RandomGenerator_;
497 template <
typename T>
499 const std::function<
void(T *)> &deleter) {
500 static UniquePtr<T> obj = new_generic(factory, deleter);
506 template <
typename T>
508 const std::function<
void(T *)> &deleter) {
516 template <
typename T,
typename A1>
518 const std::function<
void(T *)> &deleter,
527 template <
typename T,
typename A1,
typename A2>
529 const std::function<
void(T *)> &deleter,
530 const A1 &a1,
const A2 &a2) {
539 template <
typename T>
541 const std::function<T *()> &factory,
542 const std::function<
void(T *)> &deleter) {
544 std::shared_ptr<void> exit_trigger(
nullptr, [&](
void *) { mtx_.unlock(); });
546 if (!
object)
object = new_generic(factory, deleter);
551 template <
typename T>
554 std::shared_ptr<void> exit_trigger(
nullptr, [&](
void *) { mtx_.unlock(); });
559 mutable std::recursive_mutex
mtx_;
mysql_harness::RandomGeneratorInterface & get_RandomGenerator() const
Definition: dim.h:447
T & get_external_generic(UniquePtr< T > &object, const std::function< T *()> &factory, const std::function< void(T *)> &deleter)
Definition: dim.h:540
static T & get_generic(const std::function< T *(void)> &factory, const std::function< void(T *)> &deleter)
Definition: dim.h:498
void set_Config(const std::function< mysql_harness::LoaderConfig *(void)> &factory, const std::function< void(mysql_harness::LoaderConfig *)> &deleter)
Definition: dim.h:419
void set_LoggingRegistry(const std::function< mysql_harness::logging::Registry *(void)> &factory, const std::function< void(mysql_harness::logging::Registry *)> &deleter)
Definition: dim.h:400
std::function< void(mysql_harness::DynamicState *)> deleter_DynamicState_
Definition: dim.h:489
std::function< void(mysql_harness::RandomGeneratorInterface *)> deleter_RandomGenerator_
Definition: dim.h:480
static UniquePtr< T > new_generic(const std::function< T *(void)> &factory, const std::function< void(T *)> &deleter)
Definition: dim.h:507
UniquePtr< mysql_harness::logging::Registry > instance_LoggingRegistry_
Definition: dim.h:474
mysql_harness::DynamicState & get_DynamicState()
Definition: dim.h:459
void set_RandomGenerator(const std::function< mysql_harness::RandomGeneratorInterface *(void)> &factory, const std::function< void(mysql_harness::RandomGeneratorInterface *)> &deleter)
Definition: dim.h:408
std::function< void(mysql_harness::logging::Registry *)> deleter_LoggingRegistry_
Definition: dim.h:473
mysql_harness::LoaderConfig & get_Config()
Definition: dim.h:452
std::recursive_mutex mtx_
Definition: dim.h:559
void set_DynamicState(const std::function< mysql_harness::DynamicState *(void)> &factory, const std::function< void(mysql_harness::DynamicState *)> &deleter)
Definition: dim.h:428
static UniquePtr< T > new_generic1(const std::function< T *(A1)> &factory, const std::function< void(T *)> &deleter, const A1 &a1)
Definition: dim.h:517
static UniquePtr< T > new_generic2(const std::function< T *(A1, A2)> &factory, const std::function< void(T *)> &deleter, const A1 &a1, const A2 &a2)
Definition: dim.h:528
mysql_harness::logging::Registry & get_LoggingRegistry()
Definition: dim.h:440
std::function< void(mysql_harness::LoaderConfig *)> deleter_Config_
Definition: dim.h:484
void reset_generic(UniquePtr< T > &object)
Definition: dim.h:552
DIM & operator=(const DIM &)=delete
bool is_DynamicState()
Definition: dim.h:458
void reset_Config()
Definition: dim.h:418
UniquePtr< mysql_harness::DynamicState > instance_DynamicState_
Definition: dim.h:490
UniquePtr< mysql_harness::LoaderConfig > instance_Config_
Definition: dim.h:485
void reset_LoggingRegistry()
Definition: dim.h:399
void reset_DynamicState()
Definition: dim.h:427
DynamicState represents a MySQLRouter dynamic state object.
Definition: dynamic_state.h:63
Configuration file handler for the loader.
Definition: loader_config.h:45
Definition: random_generator.h:35
Definition: unique_ptr.h:74
Definition: registry.h:46
const char * p
Definition: ctype-mb.cc:1234