MCPcopy Create free account
hub / github.com/ElementsProject/lightning / plugins_exclusive_loop

Function plugins_exclusive_loop

lightningd/plugin.c:2521–2549  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2519}
2520
2521void *plugins_exclusive_loop(struct plugin **plugins)
2522{
2523 void *ret;
2524 size_t i;
2525 bool last = false;
2526 assert(tal_count(plugins) != 0);
2527
2528 for (i = 0; i < tal_count(plugins); ++i) {
2529 io_conn_out_exclusive(plugins[i]->stdin_conn, true);
2530 io_conn_exclusive(plugins[i]->stdout_conn, true);
2531 }
2532
2533 /* We don't want to try to open another transaction: we're in one! */
2534 plugins[0]->plugins->want_db_transaction = false;
2535 /* We don't service timers here, either! */
2536 ret = io_loop(NULL, NULL);
2537 plugins[0]->plugins->want_db_transaction = true;
2538 log_debug(plugins[0]->plugins->ld->log, "io_loop: %s", __func__);
2539
2540 for (i = 0; i < tal_count(plugins); ++i) {
2541 io_conn_out_exclusive(plugins[i]->stdin_conn, false);
2542 last = io_conn_exclusive(plugins[i]->stdout_conn, false);
2543 }
2544 if (last)
2545 fatal("Still io_exclusive after removing plugin %s?",
2546 plugins[tal_count(plugins) - 1]->cmd);
2547
2548 return ret;
2549}
2550
2551struct logger *plugin_get_logger(struct plugin *plugin)
2552{

Callers 1

plugin_hook_db_syncFunction · 0.85

Calls 4

io_conn_out_exclusiveFunction · 0.85
io_conn_exclusiveFunction · 0.85
io_loopFunction · 0.85
fatalFunction · 0.70

Tested by

no test coverage detected