24#ifndef MYSQL_SERVER_DYNAMIC_LOADER_SCHEMA_FILE_H 
   25#define MYSQL_SERVER_DYNAMIC_LOADER_SCHEMA_FILE_H 
   33#include <unordered_set> 
   36#define dlsym(lib, name) (void *)GetProcAddress((HMODULE)lib, name) 
   37#define dlopen(libname, unused) LoadLibraryEx(libname, nullptr, 0) 
   38#define dlclose(lib) FreeLibrary((HMODULE)lib) 
   39#define RTLD_NOW 0x00002 
   40#define DLERROR_GENERATE(errmsg, error_number)                            \ 
   41  char win_errormsg[2048];                                                \ 
   42  if (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, nullptr, error_number, 0, \ 
   43                    win_errormsg, 2048, nullptr)) {                       \ 
   45    for (ptr = &win_errormsg[0] + strlen(win_errormsg) - 1;               \ 
   46         ptr >= &win_errormsg[0] && strchr("\r\n\t\0x20", *ptr); ptr--)   \
 
   48    errmsg = win_errormsg;                                                \
 
   52#define dlopen_errno GetLastError() 
   56#ifndef MYSQL_ABI_CHECK 
   61#define DLERROR_GENERATE(errmsg, error_number) errmsg = dlerror() 
   62#define dlopen_errno errno 
Definition: dynamic_loader_scheme_file_imp.h:65
 
static mysql_rwlock_t LOCK_dynamic_loader_scheme_file
Definition: dynamic_loader_scheme_file_imp.h:71
 
static void deinit()
De-initializes RW lock, all other structures doesn't require any action.
Definition: dynamic_loader_scheme_file.cc:79
 
static mysql_service_status_t unload(const char *urn) noexcept
Unloads file that was previously loaded.
Definition: dynamic_loader_scheme_file.cc:205
 
static void init()
Initializes file:// scheme for dynamic loader for usage.
Definition: dynamic_loader_scheme_file.cc:70
 
std::map< std::string, void * > my_registry
Definition: dynamic_loader_scheme_file_imp.h:66
 
static my_registry object_files_list
Definition: dynamic_loader_scheme_file_imp.h:69
 
static std::unordered_set< list_components_func > library_entry_set
Definition: dynamic_loader_scheme_file_imp.h:70
 
static mysql_service_status_t load(const char *urn, mysql_component_t **out_data) noexcept
Loads components that are located in executable file specified by URN.
Definition: dynamic_loader_scheme_file.cc:99
 
Specifies macros to define Components.
 
Specifies macros to define Service Implementations.
 
#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:88
 
Carries information on the specific Component, all Service Implementations it provides,...
Definition: dynamic_loader.h:263
 
An instrumented rwlock structure.
Definition: mysql_rwlock_bits.h:51