26#ifndef ROUTER_SRC_REST_MRS_SRC_CACHE_MANAGER_H_
27#define ROUTER_SRC_REST_MRS_SRC_CACHE_MANAGER_H_
35template <
typename Obj>
50 other.parent_ =
nullptr;
51 other.object_ =
nullptr;
54 template <
typename... Args>
66 other.parent_ =
nullptr;
143 object.parent_ =
nullptr;
148 object.is_dirty())) {
149 objects_.push_back(std::move(
object.object_));
Kerberos Client Authentication nullptr
Definition: auth_kerberos_client_plugin.cc:247
Definition: cache_manager.h:41
~CachedObject()
Definition: cache_manager.h:58
bool operator==(const Object &obj) const
Definition: cache_manager.h:74
Object get()
Definition: cache_manager.h:77
bool wait_
Definition: cache_manager.h:107
CacheManager * parent_
Definition: cache_manager.h:106
bool is_dirty() const
Definition: cache_manager.h:102
bool empty() const
Definition: cache_manager.h:72
CachedObject & operator=(CachedObject &&other)
Definition: cache_manager.h:62
void set_dirty()
Mark that the object is dirty.
Definition: cache_manager.h:91
Object object_
Definition: cache_manager.h:108
CacheManager * get_parent() const
Definition: cache_manager.h:104
CachedObject(CacheManager *parent=nullptr)
Definition: cache_manager.h:43
CachedObject(CacheManager *parent, bool wait, Args &&...args)
Definition: cache_manager.h:55
bool dirty_
Definition: cache_manager.h:111
void set_clean()
Mark the the object is clean.
Definition: cache_manager.h:100
Object operator->()
Definition: cache_manager.h:76
CachedObject(CachedObject &&other)
Definition: cache_manager.h:46
Definition: cache_manager.h:114
CacheManager::Object Object
Definition: cache_manager.h:116
virtual void object_remove(Object)=0
virtual ~Callbacks()=default
virtual Object object_allocate(bool wait)=0
virtual bool object_before_cache(Object, bool dirty)=0
virtual bool object_retrived_from_cache(Object)=0
Definition: cache_manager.h:36
CachedObject get_instance(bool wait)
Definition: cache_manager.h:136
Obj Object
Definition: cache_manager.h:38
Callbacks * get_callbacks() const
Definition: cache_manager.h:164
std::mutex object_container_mutex_
Definition: cache_manager.h:184
void change_cache_object_limit(uint32_t limit)
Definition: cache_manager.h:157
std::list< Object > objects_
Definition: cache_manager.h:185
void return_instance(CachedObject &object)
Definition: cache_manager.h:142
virtual ~CacheManager()
Definition: cache_manager.h:129
uint32_t objects_limit_
Definition: cache_manager.h:183
Object pop(bool wait)
Definition: cache_manager.h:167
Callbacks * callbacks_
Definition: cache_manager.h:186
CacheManager(Callbacks *callbacks, uint32_t limit=20)
Definition: cache_manager.h:126
Definition: cache_manager.h:33
static int wait(mysql_cond_t *that, mysql_mutex_t *mutex_arg, const char *, unsigned int)
Definition: mysql_cond_v1_native.cc:62
Definition: gcs_xcom_synode.h:64
static std::mutex lock
Definition: net_ns.cc:56
struct result result
Definition: result.h:34