33template <
typename TService>
61 if (registry->acquire_related(
name, related_service, &
m_service)) {
79 other.m_service =
nullptr;
88 operator TService *()
const {
89 return reinterpret_cast<TService *
>(
m_service);
97 TService *
operator->()
const {
return static_cast<TService *
>(*this); }
105 return static_cast<const my_h_service_imp *
>(this->
m_service) !=
nullptr;
Wraps my_h_service struct conforming ABI into RAII C++ object with ability to cast to desired service...
Definition: my_service.h:34
my_service(const char *name, const mysql_service_registry_t *registry)
Acquires service by name.
Definition: my_service.h:44
my_service(my_h_service service, const mysql_service_registry_t *registry)
Wraps service implementation already acquired.
Definition: my_service.h:72
my_h_service m_service
Definition: my_service.h:109
bool is_valid() const
Definition: my_service.h:103
~my_service()
Definition: my_service.h:82
TService * operator->() const
Returns managed service typed as desired service type to execute operations specified after -> on it.
Definition: my_service.h:97
my_service(my_service< TService > &&other)
Definition: my_service.h:77
my_service(const char *name, my_h_service related_service, const mysql_service_registry_t *registry)
Acquires service by name.
Definition: my_service.h:58
my_service(const my_service< TService > &other)=delete
const mysql_service_registry_t * m_registry
Definition: my_service.h:110
struct my_h_service_imp * my_h_service
A handle type for acquired Service.
Definition: registry.h:32
#define SERVICE_TYPE(name)
Generates the standard Service type name.
Definition: service.h:75
case opt name
Definition: sslopt-case.h:32
mysql_service_status_t(* release)(my_h_service service)
Releases the Service Implementation previously acquired.
Definition: registry.h:87