Code

store: Let JSON serializers support (object) filters.
[sysdb.git] / src / include / core / plugin.h
index 51d59051e5768ee5e73cb848b216876fadf1238c..f75788ad2359a479c5be92d276366d41bf2fa21b 100644 (file)
@@ -45,8 +45,22 @@ typedef struct {
 } sdb_plugin_ctx_t;
 #define SDB_PLUGIN_CTX_INIT { 0 }
 
-struct sdb_plugin_info;
-typedef struct sdb_plugin_info sdb_plugin_info_t;
+typedef struct {
+       char *plugin_name;
+       char *filename;
+
+       /* public attributes */
+       char *description;
+       char *copyright;
+       char *license;
+
+       int   version;
+       int   plugin_version;
+} sdb_plugin_info_t;
+#define SDB_PLUGIN_INFO_INIT { \
+       /* plugin_name */ NULL, /* filename */ NULL, /* desc */ NULL, \
+       /* copyright */ NULL, /* license */ NULL, \
+       /* version */ -1, /* plugin_version */ -1 }
 
 /* this should be used in the header of a plugin to avoid
  * missing prototype warnings/errors for the plugin init
@@ -78,7 +92,6 @@ sdb_plugin_load(const char *basedir, const char *name,
  * and also to provide additional information to the user.
  */
 enum {
-       SDB_PLUGIN_INFO_NAME,          /* plugin name: string */
        SDB_PLUGIN_INFO_DESC,          /* plugin description: string */
        SDB_PLUGIN_INFO_COPYRIGHT,     /* plugin copyright: string */
        SDB_PLUGIN_INFO_LICENSE,       /* plugin license: string */
@@ -93,6 +106,9 @@ sdb_plugin_set_info(sdb_plugin_info_t *info, int type, ...);
  * plugin callback functions:
  * See the description of the respective register function for what arguments
  * the callbacks expect.
+ *
+ * The specified name of callback functions is prepended with the plugin name
+ * before being registered with the core.
  */
 
 typedef int (*sdb_plugin_config_cb)(oconfig_item_t *ci);
@@ -232,6 +248,19 @@ sdb_plugin_get_ctx(void);
 int
 sdb_plugin_set_ctx(sdb_plugin_ctx_t ctx, sdb_plugin_ctx_t *old);
 
+/*
+ * sdb_plugin_current:
+ * Retrieve information about the plugin (if any) from which the current call
+ * into the core originated. The return value may not be modified.
+ *
+ * Returns:
+ *  - information about the current plugin if we were called from some
+ *    plugin's callback function
+ *  - NULL else
+ */
+const sdb_plugin_info_t *
+sdb_plugin_current(void);
+
 /*
  * sdb_plugin_configure:
  * Configure the plugin called 'name' using the config tree 'ci'. The plugin