mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-03-11 01:27:58 +01:00
plugin: Basic scaffolding for the plugin subsystem
This commit is contained in:
parent
f7116c3a43
commit
b6a1735929
3 changed files with 74 additions and 0 deletions
|
@ -78,6 +78,7 @@ LIGHTNINGD_SRC := \
|
|||
lightningd/peer_control.c \
|
||||
lightningd/peer_htlcs.c \
|
||||
lightningd/ping.c \
|
||||
lightningd/plugin.c \
|
||||
lightningd/subd.c \
|
||||
lightningd/watch.c
|
||||
|
||||
|
|
35
lightningd/plugin.c
Normal file
35
lightningd/plugin.c
Normal file
|
@ -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)
|
||||
{
|
||||
}
|
38
lightningd/plugin.h
Normal file
38
lightningd/plugin.h
Normal file
|
@ -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…
Add table
Reference in a new issue