76 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#pragma once
 | 
						|
/*
 | 
						|
 * Copyright (c) 2016 MariaDB Corporation Ab
 | 
						|
 *
 | 
						|
 * Use of this software is governed by the Business Source License included
 | 
						|
 * in the LICENSE.TXT file and at www.mariadb.com/bsl.
 | 
						|
 *
 | 
						|
 * Change Date: 2019-07-01
 | 
						|
 *
 | 
						|
 * On the date above, in accordance with the Business Source License, use
 | 
						|
 * of this software will be governed by version 2 or later of the General
 | 
						|
 * Public License.
 | 
						|
 */
 | 
						|
 | 
						|
/**
 | 
						|
 * @file modules.h  Utilities for loading modules
 | 
						|
 *
 | 
						|
 * The module interface used within the gateway
 | 
						|
 *
 | 
						|
 * @verbatim
 | 
						|
 * Revision History
 | 
						|
 *
 | 
						|
 * Date     Who                 Description
 | 
						|
 * 13/06/13 Mark Riddoch        Initial implementation
 | 
						|
 * 08/07/13 Mark Riddoch        Addition of monitor modules
 | 
						|
 * 29/05/14 Mark Riddoch        Addition of filter modules
 | 
						|
 * 01/10/14 Mark Riddoch        Addition of call to unload all modules on shutdown
 | 
						|
 * 19/02/15 Mark Riddoch        Addition of moduleGetList
 | 
						|
 * 26/02/15 Massimiliano Pinto  Addition of module_feedback_send
 | 
						|
 *
 | 
						|
 * @endverbatim
 | 
						|
 */
 | 
						|
 | 
						|
#include <maxscale/cdefs.h>
 | 
						|
#include <maxscale/dcb.h>
 | 
						|
#include <maxscale/modinfo.h>
 | 
						|
#include <maxscale/resultset.h>
 | 
						|
#include <maxscale/debug.h>
 | 
						|
 | 
						|
MXS_BEGIN_DECLS
 | 
						|
 | 
						|
typedef struct modules
 | 
						|
{
 | 
						|
    char    *module;    /**< The name of the module */
 | 
						|
    char    *type;      /**< The module type */
 | 
						|
    char    *version;   /**< Module version */
 | 
						|
    void    *handle;    /**< The handle returned by dlopen */
 | 
						|
    void    *modobj;    /**< The module "object" this is the set of entry points */
 | 
						|
    MODULE_INFO
 | 
						|
    *info;      /**< The module information */
 | 
						|
    struct  modules
 | 
						|
        *next;      /**< Next module in the linked list */
 | 
						|
} MODULES;
 | 
						|
 | 
						|
/**
 | 
						|
 * Module types
 | 
						|
 */
 | 
						|
#define MODULE_PROTOCOL         "Protocol"        /**< A protocol module type */
 | 
						|
#define MODULE_AUTHENTICATOR    "Authenticator"   /**< An authenticator module type */
 | 
						|
#define MODULE_ROUTER           "Router"          /**< A router module type */
 | 
						|
#define MODULE_MONITOR          "Monitor"         /**< A database monitor module type */
 | 
						|
#define MODULE_FILTER           "Filter"          /**< A filter module type */
 | 
						|
#define MODULE_QUERY_CLASSIFIER "QueryClassifier" /**< A query classifier module type */
 | 
						|
 | 
						|
 | 
						|
extern  void    *load_module(const char *module, const char *type);
 | 
						|
extern  void    unload_module(const char *module);
 | 
						|
extern  void    unload_all_modules();
 | 
						|
extern  void    printModules();
 | 
						|
extern  void    dprintAllModules(DCB *);
 | 
						|
extern  RESULTSET   *moduleGetList();
 | 
						|
extern void module_feedback_send(void*);
 | 
						|
extern void moduleShowFeedbackReport(DCB *dcb);
 | 
						|
 | 
						|
MXS_END_DECLS
 |