mirror of
https://github.com/ElementsProject/lightning.git
synced 2024-11-19 09:54:16 +01:00
Plugins: allow to specify plugin option type in libplugin.c, then specify it to autoclean options
This commit is contained in:
parent
3775a32659
commit
4640d18ef0
@ -84,10 +84,12 @@ int main(int argc, char *argv[])
|
||||
setup_locale();
|
||||
plugin_main(argv, init, commands, ARRAY_SIZE(commands),
|
||||
plugin_option("autocleaninvoice-cycle",
|
||||
"string",
|
||||
"Perform cleanup of expired invoices every"
|
||||
" given seconds, or do not autoclean if 0",
|
||||
u64_option, &cycle_seconds),
|
||||
plugin_option("autocleaninvoice-expired-by",
|
||||
"string",
|
||||
"If expired invoice autoclean enabled,"
|
||||
" invoices that have expired for at least"
|
||||
" this given seconds are cleaned",
|
||||
|
@ -439,11 +439,12 @@ handle_getmanifest(struct command *getmanifest_cmd,
|
||||
|
||||
for (size_t i = 0; i < tal_count(opts); i++) {
|
||||
tal_append_fmt(¶ms, "{ 'name': '%s',"
|
||||
" 'type': 'string',"
|
||||
" 'description': '%s' }%s",
|
||||
opts[i].name,
|
||||
opts[i].description,
|
||||
i == tal_count(opts) - 1 ? "" : ",\n");
|
||||
" 'type': '%s',"
|
||||
" 'description': '%s' }%s",
|
||||
opts[i].name,
|
||||
opts[i].type,
|
||||
opts[i].description,
|
||||
i == tal_count(opts) - 1 ? "" : ",\n");
|
||||
}
|
||||
|
||||
tal_append_fmt(¶ms,
|
||||
@ -507,7 +508,6 @@ static struct command_result *handle_init(struct command *init_cmd,
|
||||
&rpc_conn,
|
||||
".allow-deprecated-apis"),
|
||||
"true");
|
||||
|
||||
opttok = json_get_member(buf, params, "options");
|
||||
json_for_each_obj(i, t, opttok) {
|
||||
char *opt = json_strdup(NULL, buf, t);
|
||||
@ -695,6 +695,7 @@ void plugin_main(char *argv[],
|
||||
while ((optname = va_arg(ap, const char *)) != NULL) {
|
||||
struct plugin_option o;
|
||||
o.name = optname;
|
||||
o.type = va_arg(ap, const char *);
|
||||
o.description = va_arg(ap, const char *);
|
||||
o.handle = va_arg(ap, char *(*)(const char *str, void *arg));
|
||||
o.arg = va_arg(ap, void *);
|
||||
|
@ -29,6 +29,7 @@ struct plugin_command {
|
||||
/* Create an array of these, one for each --option you support. */
|
||||
struct plugin_option {
|
||||
const char *name;
|
||||
const char *type;
|
||||
const char *description;
|
||||
char *(*handle)(const char *str, void *arg);
|
||||
void *arg;
|
||||
@ -119,8 +120,9 @@ struct plugin_timer *plugin_timer(struct plugin_conn *rpc,
|
||||
void PRINTF_FMT(2, 3) plugin_log(enum log_level l, const char *fmt, ...);
|
||||
|
||||
/* Macro to define arguments */
|
||||
#define plugin_option(name, description, set, arg) \
|
||||
#define plugin_option(name, type, description, set, arg) \
|
||||
(name), \
|
||||
(type), \
|
||||
(description), \
|
||||
typesafe_cb_preargs(char *, void *, (set), (arg), const char *), \
|
||||
(arg)
|
||||
|
Loading…
Reference in New Issue
Block a user