From ba4fc7415423784850da1794dc19e371f8bdb54e Mon Sep 17 00:00:00 2001 From: Stephan Bosch Date: Sat, 9 Nov 2019 10:47:04 +0100 Subject: [PATCH] lib: iostream-pump - Add support for switching to an explicit ioloop. --- src/lib/iostream-pump.c | 14 ++++++++++---- src/lib/iostream-pump.h | 3 +++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/lib/iostream-pump.c b/src/lib/iostream-pump.c index dee0687522..cebae3dd8b 100644 --- a/src/lib/iostream-pump.c +++ b/src/lib/iostream-pump.c @@ -235,11 +235,17 @@ bool iostream_pump_is_waiting_output(struct iostream_pump *pump) return pump->waiting_output; } -void iostream_pump_switch_ioloop(struct iostream_pump *pump) +void iostream_pump_switch_ioloop_to(struct iostream_pump *pump, + struct ioloop *ioloop) { i_assert(pump != NULL); if (pump->io != NULL) - pump->io = io_loop_move_io(&pump->io); - o_stream_switch_ioloop(pump->output); - i_stream_switch_ioloop(pump->input); + pump->io = io_loop_move_io_to(ioloop, &pump->io); + o_stream_switch_ioloop_to(pump->output, ioloop); + i_stream_switch_ioloop_to(pump->input, ioloop); +} + +void iostream_pump_switch_ioloop(struct iostream_pump *pump) +{ + iostream_pump_switch_ioloop_to(pump, current_ioloop); } diff --git a/src/lib/iostream-pump.h b/src/lib/iostream-pump.h index 95fdfb7e10..d7317ae2f9 100644 --- a/src/lib/iostream-pump.h +++ b/src/lib/iostream-pump.h @@ -16,6 +16,7 @@ struct istream; struct ostream; +struct ioloop; struct iostream_pump; enum iostream_pump_status { @@ -61,6 +62,8 @@ void iostream_pump_set_completion_callback(struct iostream_pump *pump, from the completion callback in error conditions. */ bool iostream_pump_is_waiting_output(struct iostream_pump *pump); +void iostream_pump_switch_ioloop_to(struct iostream_pump *pump, + struct ioloop *ioloop); void iostream_pump_switch_ioloop(struct iostream_pump *pump); #endif -- 2.47.3