Browse Source

libplugin: add support for before and after deps on hooks.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
ppa-prep
Rusty Russell 4 years ago
committed by neil saitug
parent
commit
62c52fe868
  1. 21
      plugins/libplugin.c
  2. 2
      plugins/libplugin.h
  3. 5
      tests/plugins/test_libplugin.c

21
plugins/libplugin.c

@ -628,8 +628,25 @@ handle_getmanifest(struct command *getmanifest_cmd,
json_array_end(params); json_array_end(params);
json_array_start(params, "hooks"); json_array_start(params, "hooks");
for (size_t i = 0; i < p->num_hook_subs; i++) for (size_t i = 0; i < p->num_hook_subs; i++) {
json_add_string(params, NULL, p->hook_subs[i].name); json_object_start(params, NULL);
json_add_string(params, "name", p->hook_subs[i].name);
if (p->hook_subs[i].before) {
json_array_start(params, "before");
for (size_t j = 0; p->hook_subs[i].before[j]; j++)
json_add_string(params, NULL,
p->hook_subs[i].before[j]);
json_array_end(params);
}
if (p->hook_subs[i].after) {
json_array_start(params, "after");
for (size_t j = 0; p->hook_subs[i].after[j]; j++)
json_add_string(params, NULL,
p->hook_subs[i].after[j]);
json_array_end(params);
}
json_object_end(params);
}
json_array_end(params); json_array_end(params);
if (p->our_features != NULL) { if (p->our_features != NULL) {

2
plugins/libplugin.h

@ -93,6 +93,8 @@ struct plugin_hook {
struct command_result *(*handle)(struct command *cmd, struct command_result *(*handle)(struct command *cmd,
const char *buf, const char *buf,
const jsmntok_t *params); const jsmntok_t *params);
/* If non-NULL, these are NULL-terminated arrays of deps */
const char **before, **after;
}; };
/* Return the feature set of the current lightning node */ /* Return the feature set of the current lightning node */

5
tests/plugins/test_libplugin.c

@ -118,9 +118,14 @@ static const struct plugin_command commands[] = { {
} }
}; };
static const char *before[] = { "dummy", NULL };
static const char *after[] = { "dummy", NULL };
static const struct plugin_hook hooks[] = { { static const struct plugin_hook hooks[] = { {
"peer_connected", "peer_connected",
json_peer_connected, json_peer_connected,
before,
after
} }
}; };

Loading…
Cancel
Save