about summary refs log tree commit diff
path: root/scrape.c
diff options
context:
space:
mode:
authorHeikki Kallasjoki <fis@zem.fi>2018-12-23 00:06:59 +0000
committerHeikki Kallasjoki <fis+github@zem.fi>2018-12-23 21:50:27 +0000
commit6d65b7fb9242eb827d5d4036f0fa8816430eb364 (patch)
treecfc35c119a14ecb89d7d35980fe7191cc6b3230f /scrape.c
parent5c50e58b1af19e4cd54e272e143091b80e127d8c (diff)
downloadnano-exporter-6d65b7fb9242eb827d5d4036f0fa8816430eb364.tar.gz
nano-exporter-6d65b7fb9242eb827d5d4036f0fa8816430eb364.tar.xz
nano-exporter-6d65b7fb9242eb827d5d4036f0fa8816430eb364.zip
Move the collector loop into scrape server code.
This paves the way for supporting parallel scrapes (#19); the
implementation for that is going to need to track the state of the
current scrape.
Diffstat (limited to 'scrape.c')
-rw-r--r--scrape.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/scrape.c b/scrape.c
index c86e853..f632e4e 100644
--- a/scrape.c
+++ b/scrape.c
@@ -110,7 +110,7 @@ scrape_server *scrape_listen(const char *port) {
   return srv;
 }
 
-void scrape_serve(scrape_server *srv, scrape_handler *handler, void *handler_ctx) {
+void scrape_serve(scrape_server *srv, unsigned ncoll, const struct collector *coll[], void *coll_ctx[]) {
   struct scrape_req req;
   req.buf = bbuf_alloc(BUF_INITIAL, BUF_MAX);
 
@@ -137,8 +137,10 @@ void scrape_serve(scrape_server *srv, scrape_handler *handler, void *handler_ctx
         continue;
       }
 
-      if (handle_http(&req))
-        handler(&req, handler_ctx);
+      if (handle_http(&req)) {
+        for (unsigned c = 0; c < ncoll; c++)
+          coll[c]->collect(&req, coll_ctx[c]);
+      }
       close(req.socket);
     }
   }