Create a macro for module declarations
The modules are now declared with a common macro. This allows future additions to the module loading process while also making the loaded symbol name a constant.
This commit is contained in:
parent
ae0577c695
commit
b00e0328d5
@ -193,7 +193,7 @@ protected:
|
||||
* The plugin function @c GetModuleObject is then implemented as follows:
|
||||
*
|
||||
* @code
|
||||
* extern "C" MODULE_INFO* GetModuleObject()
|
||||
* extern "C" MODULE_INFO* MXS_CREATE_MODULE()
|
||||
* {
|
||||
* return &MyFilter::s_object;
|
||||
* };
|
||||
|
@ -81,12 +81,43 @@ typedef struct
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
MODULE_API modapi;
|
||||
MODULE_STATUS status;
|
||||
MODULE_VERSION api_version;
|
||||
const char *description;
|
||||
const char *version;
|
||||
void *module_object;
|
||||
MODULE_API modapi; /**< Module API type */
|
||||
MODULE_STATUS status; /**< Module development status */
|
||||
MODULE_VERSION api_version; /**< Module API version */
|
||||
const char *description; /**< Module description */
|
||||
const char *version; /**< Module version */
|
||||
void *module_object; /**< Module type specific API implementation */
|
||||
} MODULE_INFO;
|
||||
|
||||
/**
|
||||
* Name of the module entry point
|
||||
*
|
||||
* All modules should declare the module entry point in the following style:
|
||||
*
|
||||
* @code{.cpp}
|
||||
*
|
||||
* MODULE_INFO* MXS_CREATE_MODULE()
|
||||
* {
|
||||
* // Module specific API implementation
|
||||
* static FILTER_OBJECT my_object = { ... };
|
||||
*
|
||||
* // An implementation of the MODULE_INFO structure
|
||||
* static MODULE_INFO info = { ... };
|
||||
*
|
||||
* // Any global initialization should be done here
|
||||
*
|
||||
* return &info;
|
||||
* }
|
||||
*
|
||||
* @endcode
|
||||
*
|
||||
* The @c module_object field of the MODULE_INFO structure should point to
|
||||
* the module type specific API implementation. In the above example, the @c info
|
||||
* would declare a pointer to @c my_object as the last member of the struct.
|
||||
*/
|
||||
#define MXS_CREATE_MODULE mxs_get_module_object
|
||||
|
||||
/** Name of the symbol that MaxScale will load */
|
||||
#define MXS_MODULE_SYMBOL_NAME "mxs_get_module_object"
|
||||
|
||||
MXS_END_DECLS
|
||||
|
@ -97,7 +97,7 @@ void qc_thread_end(void)
|
||||
|
||||
extern "C"
|
||||
{
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
static QUERY_CLASSIFIER qc =
|
||||
{
|
||||
|
@ -2557,7 +2557,7 @@ void qc_thread_end(void)
|
||||
extern "C"
|
||||
{
|
||||
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
static QUERY_CLASSIFIER qc =
|
||||
{
|
||||
|
@ -3172,7 +3172,7 @@ void qc_sqlite_get_field_info(GWBUF* query, const QC_FIELD_INFO** infos, size_t*
|
||||
* EXPORTS
|
||||
*/
|
||||
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
static QUERY_CLASSIFIER qc =
|
||||
{
|
||||
|
@ -194,7 +194,7 @@ void *load_module(const char *module, const char *type)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void *sym = dlsym(dlhandle, "GetModuleObject");
|
||||
void *sym = dlsym(dlhandle, MXS_MODULE_SYMBOL_NAME);
|
||||
|
||||
if (sym == NULL)
|
||||
{
|
||||
|
@ -143,7 +143,7 @@ static bool cdc_add_new_user(const MODULECMD_ARG *args)
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
static modulecmd_arg_type_t args[] =
|
||||
{
|
||||
|
@ -599,7 +599,7 @@ int gssapi_auth_load_users(SERV_LISTENER *listener)
|
||||
/**
|
||||
* Module handle entry point
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
static GWAUTHENTICATOR MyObject =
|
||||
{
|
||||
|
@ -263,7 +263,7 @@ static int gssapi_backend_auth_authenticate(DCB *dcb)
|
||||
/**
|
||||
* Module handle entry point
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
static GWAUTHENTICATOR MyObject =
|
||||
{
|
||||
|
@ -53,7 +53,7 @@ typedef struct http_auth
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
static GWAUTHENTICATOR MyObject =
|
||||
{
|
||||
|
@ -47,7 +47,7 @@ static void max_admin_auth_free_client_data(DCB *dcb);
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
static GWAUTHENTICATOR MyObject =
|
||||
{
|
||||
|
@ -71,7 +71,7 @@ static int mysql_auth_set_client_data(
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
static GWAUTHENTICATOR MyObject =
|
||||
{
|
||||
|
@ -156,7 +156,7 @@ static bool auth_backend_ssl(DCB *dcb)
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
static GWAUTHENTICATOR MyObject =
|
||||
{
|
||||
|
@ -49,7 +49,7 @@ static void null_auth_free_client_data(DCB *dcb);
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
static GWAUTHENTICATOR MyObject =
|
||||
{
|
||||
|
@ -46,7 +46,7 @@ static void null_auth_free_client_data(DCB *dcb);
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
static GWAUTHENTICATOR MyObject =
|
||||
{
|
||||
|
2
server/modules/filter/cache/cachefilter.cc
vendored
2
server/modules/filter/cache/cachefilter.cc
vendored
@ -193,7 +193,7 @@ bool config_get_uint64(const FILTER_PARAMETER& param, uint64_t* pValue)
|
||||
// Global symbols of the Module
|
||||
//
|
||||
|
||||
extern "C" MODULE_INFO* GetModuleObject()
|
||||
extern "C" MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
static modulecmd_arg_type_t show_argv[] =
|
||||
{
|
||||
|
@ -99,7 +99,7 @@ typedef struct
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
static FILTER_OBJECT MyObject =
|
||||
{
|
||||
|
@ -777,7 +777,7 @@ bool dbfw_show_rules(const MODULECMD_ARG *argv)
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
modulecmd_arg_type_t args_rules_reload[] =
|
||||
{
|
||||
|
@ -40,7 +40,7 @@ static uint64_t getCapabilities(void);
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
static FILTER_OBJECT MyObject =
|
||||
{
|
||||
|
@ -72,7 +72,7 @@ static uint64_t getCapabilities(void);
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
static FILTER_OBJECT MyObject =
|
||||
{
|
||||
|
@ -18,7 +18,7 @@
|
||||
// Global symbols of the Module
|
||||
//
|
||||
|
||||
extern "C" MODULE_INFO* GetModuleObject()
|
||||
extern "C" MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
MXS_NOTICE("Initialized masking module.");
|
||||
|
||||
|
@ -64,7 +64,7 @@ static uint64_t getCapabilities(void);
|
||||
*
|
||||
* @return The module object.
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
static FILTER_OBJECT object =
|
||||
{
|
||||
|
@ -245,7 +245,7 @@ void sendMessage(void* data);
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
static FILTER_OBJECT MyObject =
|
||||
{
|
||||
|
@ -80,7 +80,7 @@ typedef struct
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
static FILTER_OBJECT MyObject =
|
||||
{
|
||||
|
@ -139,7 +139,7 @@ static int write_log_entry(uint32_t, FILE*, QLA_INSTANCE*, QLA_SESSION*, const c
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
static FILTER_OBJECT MyObject =
|
||||
{
|
||||
|
@ -90,7 +90,7 @@ void log_nomatch(REGEX_INSTANCE* inst, char* re, char* old);
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
static FILTER_OBJECT MyObject =
|
||||
{
|
||||
|
@ -289,7 +289,7 @@ orphan_free(void* data)
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
spinlock_init(&orphanLock);
|
||||
#ifdef SS_DEBUG
|
||||
|
@ -69,7 +69,7 @@ typedef struct
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
static FILTER_OBJECT MyObject =
|
||||
{
|
||||
|
@ -123,7 +123,7 @@ typedef struct
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
static FILTER_OBJECT MyObject =
|
||||
{
|
||||
|
@ -142,7 +142,7 @@ typedef struct
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
static FILTER_OBJECT MyObject =
|
||||
{
|
||||
|
@ -344,7 +344,7 @@ diagnostics(DCB *dcb, const MONITOR *mon)
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
static MONITOR_OBJECT MyObject =
|
||||
{
|
||||
|
@ -59,7 +59,7 @@ bool isGaleraEvent(monitor_event_t event);
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
MXS_NOTICE("Initialise the MySQL Galera Monitor module.");
|
||||
|
||||
|
@ -60,7 +60,7 @@ static bool isMySQLEvent(monitor_event_t event);
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
MXS_NOTICE("Initialise the Multi-Master Monitor module.");
|
||||
|
||||
|
@ -94,7 +94,7 @@ static const char* hb_table_name = "maxscale_schema.replication_heartbeat";
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
MXS_NOTICE("Initialise the MySQL Monitor module.");
|
||||
|
||||
|
@ -53,7 +53,7 @@ bool isNdbEvent(monitor_event_t event);
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
MXS_NOTICE("Initialise the MySQL Cluster Monitor module.");
|
||||
|
||||
|
@ -68,7 +68,7 @@ static char* cdc_default_auth()
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
static GWPROTOCOL MyObject =
|
||||
{
|
||||
|
@ -63,7 +63,7 @@ static char *httpd_default_auth();
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
static GWPROTOCOL MyObject =
|
||||
{
|
||||
|
@ -85,7 +85,7 @@ static int gw_send_change_user_to_backend(char *dbname,
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
static GWPROTOCOL MyObject =
|
||||
{
|
||||
|
@ -93,7 +93,7 @@ static void gw_process_one_new_client(DCB *client_dcb);
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
static GWPROTOCOL MyObject =
|
||||
{
|
||||
|
@ -164,7 +164,7 @@ static bool authenticate_socket(MAXSCALED *protocol, DCB *dcb)
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
MXS_INFO("Initialise MaxScaled Protocol module.");
|
||||
|
||||
|
@ -81,7 +81,7 @@ static void telnetd_echo(DCB *dcb, int enable);
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
MXS_INFO("Initialise Telnetd Protocol module.");
|
||||
|
||||
|
@ -52,7 +52,7 @@ static int test_connection_limit(DCB *dcb, int limit){return 0;}
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
static GWPROTOCOL MyObject =
|
||||
{
|
||||
|
@ -126,7 +126,7 @@ bool avro_handle_convert(const MODULECMD_ARG *args)
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
spinlock_init(&instlock);
|
||||
instances = NULL;
|
||||
|
@ -134,7 +134,7 @@ static ROUTER_INSTANCE *instances;
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
MXS_NOTICE("Initialise binlog router module.");
|
||||
spinlock_init(&instlock);
|
||||
|
@ -62,7 +62,7 @@ static CLI_INSTANCE *instances;
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
MXS_NOTICE("Initialise CLI router module");
|
||||
spinlock_init(&instlock);
|
||||
|
@ -61,7 +61,7 @@ static CLI_INSTANCE *instances;
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
MXS_NOTICE("Initialise debug CLI router module.");
|
||||
spinlock_init(&instlock);
|
||||
|
@ -85,7 +85,7 @@ static INFO_INSTANCE *instances;
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
MXS_NOTICE("Initialise MaxInfo router module.");
|
||||
spinlock_init(&instlock);
|
||||
|
@ -118,7 +118,7 @@ static ROUTER_INSTANCE *instances;
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
MXS_NOTICE("Initialise readconnroute router module.");
|
||||
spinlock_init(&instlock);
|
||||
|
@ -113,7 +113,7 @@ static bool create_backends(ROUTER_CLIENT_SES *rses, backend_ref_t** dest, int*
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO *GetModuleObject()
|
||||
MODULE_INFO *MXS_CREATE_MODULE()
|
||||
{
|
||||
static ROUTER_OBJECT MyObject =
|
||||
{
|
||||
|
@ -591,7 +591,7 @@ bool check_shard_status(ROUTER_INSTANCE* router, char* shard)
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
MXS_NOTICE("Initializing Schema Sharding Router.");
|
||||
spinlock_init(&instlock);
|
||||
|
@ -46,7 +46,7 @@ typedef struct
|
||||
*
|
||||
* @return The module object
|
||||
*/
|
||||
MODULE_INFO* GetModuleObject()
|
||||
MODULE_INFO* MXS_CREATE_MODULE()
|
||||
{
|
||||
static ROUTER_OBJECT MyObject =
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user