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