X-Git-Url: https://git.octo.it/?p=collection4.git;a=blobdiff_plain;f=src%2Fdata_provider.c;h=e0028f8a4c309545e0efac4a6754a56a95a7ff39;hp=bf4cf889213d1a29109d91c8f849750aea5e81bb;hb=9e7f6711d2cebfec79c8038c51037ba79810323c;hpb=a4a5b5e992da52779d9e1c8870f0c7df6b199d56 diff --git a/src/data_provider.c b/src/data_provider.c index bf4cf88..e0028f8 100644 --- a/src/data_provider.c +++ b/src/data_provider.c @@ -21,13 +21,52 @@ * Florian octo Forster **/ +#include +#include + #include "data_provider.h" #include "dp_rrdtool.h" +#include +#include + +/* TODO: Turn this into an array for multiple data providers. */ +static data_provider_t *data_provider = NULL; + int data_provider_config (const oconfig_item_t *ci) /* {{{ */ { /* FIXME: Actually determine which data provider to call. */ return (dp_rrdtool_config (ci)); } /* }}} int data_provider_config */ +int data_provider_register (const char *name, data_provider_t *p) /* {{{ */ +{ + fprintf (stderr, "data_provider_register (name = %s, ptr = %p)\n", + name, (void *) p); + + if (data_provider == NULL) + data_provider = malloc (sizeof (*data_provider)); + if (data_provider == NULL) + return (ENOMEM); + + *data_provider = *p; + + return (0); +} /* }}} int data_provider_register */ + +int data_provider_get_idents (dp_get_idents_callback callback, /* {{{ */ + void *user_data) +{ + int status; + + if (data_provider == NULL) + return (EINVAL); + + /* TODO: Iterate over all data providers */ + status = data_provider->get_idents (data_provider->private_data, + callback, user_data); + + return (status); +} /* }}} int data_provider_get_idents */ + /* vim: set sw=2 sts=2 et fdm=marker : */