mirror of
https://github.com/aljazceru/lightning.git
synced 2026-01-06 07:34:21 +01:00
lightningd/plugin.c: Make plugin-exclusive loop support multiple plugins.
This commit is contained in:
committed by
Rusty Russell
parent
5c2fc4c1cb
commit
904e110554
@@ -1715,20 +1715,28 @@ void plugin_request_send(struct plugin *plugin,
|
||||
req->stream = NULL;
|
||||
}
|
||||
|
||||
void *plugin_exclusive_loop(struct plugin *plugin)
|
||||
void *plugins_exclusive_loop(struct plugin **plugins)
|
||||
{
|
||||
void *ret;
|
||||
size_t i;
|
||||
bool last = false;
|
||||
assert(tal_count(plugins) != 0);
|
||||
|
||||
io_conn_out_exclusive(plugin->stdin_conn, true);
|
||||
io_conn_exclusive(plugin->stdout_conn, true);
|
||||
for (i = 0; i < tal_count(plugins); ++i) {
|
||||
io_conn_out_exclusive(plugins[i]->stdin_conn, true);
|
||||
io_conn_exclusive(plugins[i]->stdout_conn, true);
|
||||
}
|
||||
|
||||
/* We don't service timers here, either! */
|
||||
ret = io_loop(NULL, NULL);
|
||||
|
||||
io_conn_out_exclusive(plugin->stdin_conn, false);
|
||||
if (io_conn_exclusive(plugin->stdout_conn, false))
|
||||
for (i = 0; i < tal_count(plugins); ++i) {
|
||||
io_conn_out_exclusive(plugins[i]->stdin_conn, false);
|
||||
last = io_conn_exclusive(plugins[i]->stdout_conn, false);
|
||||
}
|
||||
if (last)
|
||||
fatal("Still io_exclusive after removing plugin %s?",
|
||||
plugin->cmd);
|
||||
plugins[tal_count(plugins) - 1]->cmd);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user