From 3e1138951b083b3a8eac7d8a03ba5db40ef2cc6e Mon Sep 17 00:00:00 2001 From: Christian Decker Date: Wed, 21 Nov 2018 21:54:01 +0100 Subject: [PATCH] plugin: Add pointer to jsonrpc so we can add new methods Signed-off-by: Christian Decker <@cdecker> --- lightningd/lightningd.c | 3 ++- lightningd/plugin.c | 8 +++++++- lightningd/plugin.h | 3 ++- lightningd/test/run-find_my_abspath.c | 3 ++- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/lightningd/lightningd.c b/lightningd/lightningd.c index 04b9b3fef..66eeed417 100644 --- a/lightningd/lightningd.c +++ b/lightningd/lightningd.c @@ -214,7 +214,7 @@ static struct lightningd *new_lightningd(const tal_t *ctx) *code. Here we initialize the context that will keep track and control *the plugins. */ - ld->plugins = plugins_new(ld, ld->log_book); + ld->plugins = plugins_new(ld, ld->log_book, ld->jsonrpc); return ld; } @@ -788,6 +788,7 @@ int main(int argc, char *argv[]) tal_free(ld->jsonrpc); db_commit_transaction(ld->wallet->db); + tal_free(ld->plugins); remove(ld->pidfile); /* FIXME: pay can have children off tmpctx which unlink from diff --git a/lightningd/plugin.c b/lightningd/plugin.c index ea3af5277..db37ad7ff 100644 --- a/lightningd/plugin.c +++ b/lightningd/plugin.c @@ -59,6 +59,9 @@ struct plugins { UINTMAP(struct plugin_request *) pending_requests; struct log *log; struct log_book *log_book; + + /* RPC interface to bind JSON-RPC methods to */ + struct jsonrpc *rpc; }; struct json_output { @@ -75,12 +78,15 @@ struct plugin_opt { char *value; }; -struct plugins *plugins_new(const tal_t *ctx, struct log_book *log_book){ +struct plugins *plugins_new(const tal_t *ctx, struct log_book *log_book, + struct jsonrpc *rpc) +{ struct plugins *p; p = tal(ctx, struct plugins); list_head_init(&p->plugins); p->log_book = log_book; p->log = new_log(p, log_book, "plugin-manager"); + p->rpc = rpc; return p; } diff --git a/lightningd/plugin.h b/lightningd/plugin.h index 96ba978cb..dac012ffe 100644 --- a/lightningd/plugin.h +++ b/lightningd/plugin.h @@ -16,7 +16,8 @@ struct plugins; /** * Create a new plugins context. */ -struct plugins *plugins_new(const tal_t *ctx, struct log_book *log_book); +struct plugins *plugins_new(const tal_t *ctx, struct log_book *log_book, + struct jsonrpc *rpc); /** * Initialize the registered plugins. diff --git a/lightningd/test/run-find_my_abspath.c b/lightningd/test/run-find_my_abspath.c index dfadc0691..9c0fd559f 100644 --- a/lightningd/test/run-find_my_abspath.c +++ b/lightningd/test/run-find_my_abspath.c @@ -135,7 +135,8 @@ void plugins_config(struct plugins *plugins UNNEEDED) void plugins_init(struct plugins *plugins UNNEEDED) { fprintf(stderr, "plugins_init called!\n"); abort(); } /* Generated stub for plugins_new */ -struct plugins *plugins_new(const tal_t *ctx UNNEEDED, struct log_book *log_book UNNEEDED) +struct plugins *plugins_new(const tal_t *ctx UNNEEDED, struct log_book *log_book UNNEEDED, + struct jsonrpc *rpc UNNEEDED) { fprintf(stderr, "plugins_new called!\n"); abort(); } /* Generated stub for register_opts */ void register_opts(struct lightningd *ld UNNEEDED)