| 2519 | } |
| 2520 | |
| 2521 | void *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 | |
| 2551 | struct logger *plugin_get_logger(struct plugin *plugin) |
| 2552 | { |
no test coverage detected