23#ifndef MYSQL_SERVER_REGISTRY_H
24#define MYSQL_SERVER_REGISTRY_H
111 (
const char *service_implementation_name,
127 (
const char *service_implementation_name));
139 (
const char *service_implementation_name));
161 (
const char *service_name_pattern,
184 const char **out_name));
215#define OBJECT_ITERATOR my_h_service_iterator
216#define METADATA_ITERATOR my_h_service_metadata_iterator
Locks RW-lock and releases lock on scope exit.
Definition: rwlock_scoped_lock.h:32
Definition: registry_imp.h:29
static void init()
Initializes registry for usage.
Definition: registry.cc:73
static mysql_service_status_t register_service(const char *service_implementation_name, my_h_service ptr) noexcept
Registers a new Service Implementation.
Definition: registry.cc:178
static mysql_rwlock_t LOCK_registry
Definition: registry_imp.h:30
static mysql_service_status_t iterator_get(my_h_service_iterator iterator, const char **out_name) noexcept
Gets name of Service pointed to by iterator.
Definition: registry.cc:312
static mysql_service_status_t iterator_is_valid(my_h_service_iterator iterator) noexcept
Checks if specified iterator is valid, i.e.
Definition: registry.cc:368
static mysql_service_status_t acquire(const char *service_name, my_h_service *out_service) noexcept
Finds and acquires a Service by name.
Definition: registry.cc:118
static mysql_service_status_t set_default(const char *service_implementation_name) noexcept
Sets new default Service Implementation for corresponding Service name.
Definition: registry.cc:216
static minimal_chassis::rwlock_scoped_lock lock_registry_for_write()
Locks whole registry for write.
Definition: registry.cc:101
static void deinit()
De-initializes registry.
Definition: registry.cc:83
static mysql_service_status_t acquire_related(const char *service_name, my_h_service service, my_h_service *out_service) noexcept
Finds a Service by name.
Definition: registry.cc:140
static mysql_service_status_t unregister(const char *service_implementation_name) noexcept
Removes previously registered Service Implementation from registry.
Definition: registry.cc:199
static mysql_service_status_t iterator_next(my_h_service_iterator iterator) noexcept
Advances specified iterator to next element.
Definition: registry.cc:342
static void iterator_release(my_h_service_iterator iterator) noexcept
Releases Service implementations iterator.
Definition: registry.cc:288
static mysql_service_status_t release(my_h_service service) noexcept
Releases the Service Implementation previously acquired.
Definition: registry.cc:158
static void rw_lock_deinit()
De-initializes RW lock.
Definition: registry.cc:91
static mysql_service_status_t iterator_create(const char *service_name_pattern, my_h_service_iterator *out_iterator) noexcept
Creates iterator that iterates through all registered Service Implementations.
Definition: registry.cc:244
Definition: registry_no_lock_imp.h:38
struct my_h_service_imp * my_h_service
A handle type for acquired Service.
Definition: registry.h:32
#define DEFINE_BOOL_METHOD(name, args)
A short macro to define method that returns bool, which is the most common case.
Definition: service_implementation.h:87
#define DEFINE_METHOD(retval, name, args)
A macro to ensure method implementation has required properties, that is it does not throw exceptions...
Definition: service_implementation.h:78
Definition: registry.cc:47
An instrumented rwlock structure.
Definition: mysql_rwlock_bits.h:50