Christian Decker
6 years ago
3 changed files with 74 additions and 0 deletions
@ -0,0 +1,35 @@ |
|||
#include "lightningd/plugin.h" |
|||
|
|||
#include <ccan/list/list.h> |
|||
#include <ccan/tal/str/str.h> |
|||
|
|||
struct plugin { |
|||
int stdin, stdout; |
|||
pid_t pid; |
|||
char *cmd; |
|||
}; |
|||
|
|||
struct plugins { |
|||
struct plugin **plugins; |
|||
}; |
|||
|
|||
struct plugins *plugins_new(const tal_t *ctx){ |
|||
struct plugins *p; |
|||
p = tal(ctx, struct plugins); |
|||
p->plugins = tal_arr(p, struct plugin *, 0); |
|||
return p; |
|||
} |
|||
|
|||
void plugin_register(struct plugins *plugins, const char* path TAKES) |
|||
{ |
|||
struct plugin *p; |
|||
size_t n = tal_count(plugins->plugins); |
|||
tal_resize(&plugins->plugins, n+1); |
|||
p = tal(plugins, struct plugin); |
|||
plugins->plugins[n] = p; |
|||
p->cmd = tal_strdup(p, path); |
|||
} |
|||
|
|||
void plugins_init(struct plugins *plugins) |
|||
{ |
|||
} |
@ -0,0 +1,38 @@ |
|||
#ifndef LIGHTNING_LIGHTNINGD_PLUGIN_H |
|||
#define LIGHTNING_LIGHTNINGD_PLUGIN_H |
|||
#include "config.h" |
|||
#include <ccan/take/take.h> |
|||
#include <ccan/tal/tal.h> |
|||
|
|||
/**
|
|||
* A collection of plugins, and some associated information. |
|||
* |
|||
* Mainly used as root context for calls in the plugin subsystem. |
|||
*/ |
|||
struct plugins; |
|||
|
|||
/**
|
|||
* Create a new plugins context. |
|||
*/ |
|||
struct plugins *plugins_new(const tal_t *ctx); |
|||
|
|||
/**
|
|||
* Initialize the registered plugins. |
|||
* |
|||
* Initialization includes spinning up the plugins, reading their |
|||
* manifest, and registering the JSON-RPC passthrough and command line |
|||
* arguments. In order to read the getmanifest reply from the plugins |
|||
* we spin up our own io_loop that exits once all plugins have |
|||
* responded. |
|||
*/ |
|||
void plugins_init(struct plugins *plugins); |
|||
|
|||
/**
|
|||
* Register a plugin for initialization and execution. |
|||
* |
|||
* @param plugins: Plugin context |
|||
* @param path: The path of the executable for this plugin |
|||
*/ |
|||
void plugin_register(struct plugins *plugins, const char* path TAKES); |
|||
|
|||
#endif /* LIGHTNING_LIGHTNINGD_PLUGIN_H */ |
Loading…
Reference in new issue