Addition of API modinfo implementation for filters

This commit is contained in:
Mark Riddoch
2014-06-02 18:18:31 +01:00
parent b764745fc3
commit 1d48794963
4 changed files with 33 additions and 0 deletions

View File

@ -179,6 +179,16 @@ MODULE_INFO *mod_info = NULL;
module))); module)));
fatal = 1; fatal = 1;
} }
if (strcmp(type, MODULE_FILTER) == 0
&& mod_info->modapi != MODULE_API_FILTER)
{
LOGIF(LE, (skygw_log_write_flush(
LOGFILE_ERROR,
"Module '%s' does not implement "
"the filter API.\n",
module)));
fatal = 1;
}
if (fatal) if (fatal)
{ {
dlclose(dlhandle); dlclose(dlhandle);

View File

@ -69,6 +69,13 @@ typedef struct filter_object {
void (*diagnostics)(FILTER *instance, void *fsession, DCB *dcb); void (*diagnostics)(FILTER *instance, void *fsession, DCB *dcb);
} FILTER_OBJECT; } FILTER_OBJECT;
/**
* The filter API version. If the FILTER_OBJECT structure or the filter API
* is changed these values must be updated in line with the rules in the
* file modinfo.h.
*/
#define FILTER_VERSION {1, 0, 0}
/** /**
* The definition of a filter form the configuration file. * The definition of a filter form the configuration file.
* This is basically the link between a plugin to load and the * This is basically the link between a plugin to load and the

View File

@ -31,8 +31,16 @@
#include <stdio.h> #include <stdio.h>
#include <fcntl.h> #include <fcntl.h>
#include <filter.h> #include <filter.h>
#include <modinfo.h>
#include <string.h> #include <string.h>
MODULE_INFO info = {
MODULE_API_FILTER,
MODULE_ALPHA_RELEASE,
FILTER_VERSION,
"A simple query logging filter"
};
static char *version_str = "V1.0.0"; static char *version_str = "V1.0.0";
/* /*

View File

@ -17,6 +17,7 @@
*/ */
#include <stdio.h> #include <stdio.h>
#include <filter.h> #include <filter.h>
#include <modinfo.h>
/** /**
* testfilter.c - a very simple test filter. * testfilter.c - a very simple test filter.
@ -28,6 +29,13 @@
* Reporting is done via the diagnostics print routine. * Reporting is done via the diagnostics print routine.
*/ */
MODULE_INFO info = {
MODULE_API_FILTER,
MODULE_ALPHA_RELEASE,
FILTER_VERSION,
"A simple query counting filter"
};
static char *version_str = "V1.0.0"; static char *version_str = "V1.0.0";
static FILTER *createInstance(char **options); static FILTER *createInstance(char **options);