MySQL 8.0.39
Source Code Documentation
s_mysql_registry_query Struct Reference

Service for listing all Service Implementations by iterator. More...

#include <registry.h>

Public Attributes

mysql_service_status_t(* create )(const char *service_name_pattern, my_h_service_iterator *out_iterator)
 Creates iterator that iterates through all registered Service Implementations. More...
 
mysql_service_status_t(* get )(my_h_service_iterator iter, const char **out_name)
 Gets name of Service pointed to by iterator. More...
 
mysql_service_status_t(* next )(my_h_service_iterator iter)
 Advances specified iterator to next element. More...
 
mysql_service_status_t(* is_valid )(my_h_service_iterator iter)
 Checks if specified iterator is valid, i.e. More...
 
void(* release )(my_h_service_iterator iter)
 Releases the Service Implementations iterator. More...
 

Detailed Description

Service for listing all Service Implementations by iterator.

Member Data Documentation

◆ create

mysql_service_status_t(* s_mysql_registry_query::create) (const char *service_name_pattern, my_h_service_iterator *out_iterator)

Creates iterator that iterates through all registered Service Implementations.

If successful it leaves read lock on the Registry until iterator is released. The starting point of iteration may be specified to be on one particular Service Implementation. The iterator will move through all Service Implementations and additionally through all default Service Implementation additionally, i.e. the default Service Implementation will be returned twice. If no name is specified for search, iterator will be positioned on the first Service Implementation.

Warning
Takes and keeps a lock on the registry until the iterator is closed!
Parameters
service_name_patternName of Service or Service Implementation to start iteration from. May be empty string or NULL pointer, in which case iteration starts from the first Service Implementation.
[out]out_iteratorPointer to the Service Implementation iterator handle.
Returns
Status of performed operation
Return values
falsesuccess
truefailure

◆ get

mysql_service_status_t(* s_mysql_registry_query::get) (my_h_service_iterator iter, const char **out_name)

Gets name of Service pointed to by iterator.

The pointer returned will last at least up to the moment of call to the release() method on the iterator.

Parameters
iteratorService Implementation iterator handle.
[out]out_namePointer to string with name to set result pointer to.
Returns
Status of performed operation
Return values
falsesuccess
trueFailure, may be caused when called on iterator that went through all values already.

◆ is_valid

mysql_service_status_t(* s_mysql_registry_query::is_valid) (my_h_service_iterator iter)

Checks if specified iterator is valid, i.e.

have not reached one-past-last element.

Parameters
iteratorService Implementation iterator handle.
Returns
Validity of iterator
Return values
falseValid
trueInvalid or reached one-past-last element.

◆ next

mysql_service_status_t(* s_mysql_registry_query::next) (my_h_service_iterator iter)

Advances specified iterator to next element.

Will succeed but return true if it reaches one-past-last element.

Note
You should collect the service names in a local cache, close the iterator and only then try to resolve the names using the other registry services.
Warning
Make sure to close the iterator before looking up the name into the registry! Otherwise undefined behavior will ensure. Most probably a deadlock.
Parameters
iteratorService Implementation iterator handle.
Returns
Status of performed operation and validity of iterator after operation.
Return values
falsesuccess
trueFailure or called on iterator that was on last element.

◆ release

void(* s_mysql_registry_query::release) (my_h_service_iterator iter)

Releases the Service Implementations iterator.

Releases read lock on the Registry.

Parameters
iteratorService Implementation iterator handle.
Returns
Status of performed operation
Return values
falsesuccess
truefailure

The documentation for this struct was generated from the following file: