afs-supervisor: Add verb for running discovery
authorJosé Bollo <jose.bollo@iot.bzh>
Wed, 14 Feb 2018 14:18:34 +0000 (15:18 +0100)
committerJosé Bollo <jose.bollo@iot.bzh>
Wed, 14 Feb 2018 14:18:34 +0000 (15:18 +0100)
Change-Id: Iea9e54fa7a1c93ba3927c836d6ca5bcded77ca66
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
src/afs-supervisor.c

index 8cf21cb..35a3f3e 100644 (file)
@@ -277,13 +277,17 @@ static void discovered_cb(void *closure, pid_t pid)
        struct supervised *s;
 
        s = supervised_of_pid(pid);
-       if (!s)
+       if (!s) {
+               (*(int*)closure)++;
                kill(pid, SIGHUP);
+       }
 }
 
-static void discover_supervised()
+static int discover_supervised()
 {
-       afs_discover("afb-daemon", discovered_cb, NULL);
+       int n = 0;
+       afs_discover("afb-daemon", discovered_cb, &n);
+       return n;
 }
 
 /**
@@ -411,6 +415,12 @@ static void f_list(struct afb_req req)
        afb_req_success(req, resu, NULL);
 }
 
+static void f_discover(struct afb_req req)
+{
+       discover_supervised();
+       afb_req_success(req, NULL, NULL);
+}
+
 static void propagate(struct afb_req req, const char *verb)
 {
        struct afb_xreq *xreq;
@@ -555,6 +565,13 @@ static const struct afb_verb_v2 _afb_verbs_v2_supervision[] = {
         .info = NULL,
         .session = AFB_SESSION_NONE_V2
     },
+    {
+        .verb = "discover",
+        .callback = f_discover,
+        .auth = &_afb_auths_v2_supervision[0],
+        .info = NULL,
+        .session = AFB_SESSION_NONE_V2
+    },
     { .verb = NULL }
 };