src/graph_list.c: cachefile → cache_file
[collection4.git] / src / graph_list.c
index a0f0f29..b979672 100644 (file)
@@ -38,6 +38,7 @@
 
 #include "graph_list.h"
 #include "common.h"
+#include "data_provider.h"
 #include "filesystem.h"
 #include "graph.h"
 #include "graph_config.h"
@@ -54,7 +55,6 @@
  * Defines
  */
 #define UPDATE_INTERVAL 900
-#define CACHE_FILE "/tmp/collection4.json"
 
 /*
  * Global variables
@@ -75,9 +75,6 @@ static size_t host_list_len = 0;
 
 static time_t gl_last_update = 0;
 
-/* TODO: Turn this into an array for multiple data providers. */
-static data_provider_t *data_provider = NULL;
-
 /*
  * Private functions
  */
@@ -212,7 +209,7 @@ static int gl_register_file (const graph_ident_t *file, /* {{{ */
   return (0);
 } /* }}} int gl_register_file */
 
-static int gl_register_ident (const graph_ident_t *ident, /* {{{ */
+static int gl_register_ident (graph_ident_t *ident, /* {{{ */
     __attribute__((unused)) void *user_data)
 {
   /* TODO: Check for duplicates if multiple data providers are used. */
@@ -271,21 +268,19 @@ static int gl_update_cache (void) /* {{{ */
   int fd;
   yajl_gen handler;
   yajl_gen_config handler_config = { /* pretty = */ 1, /* indent = */ "  " };
+  const char *cache_file = graph_config_get_cache_file ();
   struct flock lock;
   struct stat statbuf;
   int status;
   size_t i;
 
   memset (&statbuf, 0, sizeof (statbuf));
-  status = stat (CACHE_FILE, &statbuf);
+  status = stat (cache_file, &statbuf);
   if (status == 0)
   {
     if (statbuf.st_mtime >= gl_last_update)
-    {
-      fprintf (stderr, "gl_update_cache: Not writing to cache because it's "
-          "at least as new as our internal data\n");
+      /* Not writing to cache because it's at least as new as our internal data */
       return (0);
-    }
   }
   else
   {
@@ -295,7 +290,7 @@ static int gl_update_cache (void) /* {{{ */
     /* Continue writing the file if possible. */
   }
 
-  fd = open (CACHE_FILE, O_WRONLY | O_TRUNC | O_CREAT,
+  fd = open (cache_file, O_WRONLY | O_TRUNC | O_CREAT,
       S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH);
   if (fd < 0)
   {
@@ -625,7 +620,7 @@ static int gl_read_cache (_Bool block) /* {{{ */
   int status;
   time_t now;
 
-  fd = open (CACHE_FILE, O_RDONLY);
+  fd = open (graph_config_get_cache_file (), O_RDONLY);
   if (fd < 0)
   {
     fprintf (stderr, "gl_read_cache: open(2) failed with status %i\n", errno);
@@ -786,21 +781,6 @@ int gl_config_submit (void) /* {{{ */
   return (0);
 } /* }}} int graph_config_submit */
 
-int gl_register_data_provider (const char *name, data_provider_t *p) /* {{{ */
-{
-  fprintf (stderr, "gl_register_data_provider (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 gl_register_data_provider */
-
 int gl_graph_get_all (_Bool include_dynamic, /* {{{ */
     graph_callback_t callback, void *user_data)
 {
@@ -1108,20 +1088,12 @@ int gl_update (_Bool request_served) /* {{{ */
   if ((status != 0)
       || ((gl_last_update + UPDATE_INTERVAL) < now))
   {
-    if (data_provider == NULL)
-    {
-      fprintf (stderr, "No data provider has been registered\n");
-      return (ENOENT);
-    }
-
     /* Clear state */
     gl_clear_instances ();
     gl_clear_hosts ();
     gl_destroy (&gl_dynamic, &gl_dynamic_num);
 
-    /* TODO: Iterate over all data providers */
-    data_provider->get_idents (data_provider->private_data,
-        gl_register_ident, /* user data = */ NULL);
+    data_provider_get_idents (gl_register_ident, /* user data = */ NULL);
 
     gl_last_update = now;
   }