iostream-pump.h revision 08c0bffa1c9ccb1ac67689093f3c99cd38cfd3a4
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainen/* Copyright (c) 2002-2016 Dovecot authors, see the included COPYING file
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo SirainenThis construct pumps data from istream to ostream asynchronously.
04c3ac276103b56185119bcff9a66de7a8bb0e68Timo SirainenThe pump requires you to provide completion callback. The
04c3ac276103b56185119bcff9a66de7a8bb0e68Timo Sirainencompletion callback is called with success parameter to
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainenindicate whether it ended with error.
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo SirainenThe istream and ostream are reffed on creation and unreffed
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainentypedef void iostream_pump_callback_t(bool success, void *context);
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Siraineniostream_pump_create(struct istream *input, struct ostream *output);
1ac7c8e9040e0d0b7e9f849e45b94bfe919595a9Timo Sirainenstruct istream *iostream_pump_get_input(struct iostream_pump *pump);
4ee00532a265bdfb38539d811fcd12d51210ac35Timo Sirainenstruct ostream *iostream_pump_get_output(struct iostream_pump *pump);
1dd054126238349e1a7d3d1ffe7f8bc5fdbacb7aTimo Sirainenvoid iostream_pump_start(struct iostream_pump *pump);
5fb3f13537dffd15a31e997da133a721c0728af8Timo Sirainenvoid iostream_pump_stop(struct iostream_pump *pump);
5fb3f13537dffd15a31e997da133a721c0728af8Timo Sirainenvoid iostream_pump_ref(struct iostream_pump *pump);
5b62dea2f88165f3f4d87bba9011343f3ff415ffTimo Sirainenvoid iostream_pump_unref(struct iostream_pump **pump_r);
5b62dea2f88165f3f4d87bba9011343f3ff415ffTimo Sirainenvoid iostream_pump_set_completion_callback(struct iostream_pump *pump,
5b62dea2f88165f3f4d87bba9011343f3ff415ffTimo Sirainen iostream_pump_callback_t *callback, void *context);
5b62dea2f88165f3f4d87bba9011343f3ff415ffTimo Sirainen#define iostream_pump_set_completion_callback(pump, callback, context) \
1dd054126238349e1a7d3d1ffe7f8bc5fdbacb7aTimo Sirainen iostream_pump_set_completion_callback(pump, (iostream_pump_callback_t *)callback, context + \
f6aaada6101dd43cd80fe965ff1ab9bfaf776252Timo Sirainen CALLBACK_TYPECHECK(callback, void (*)(bool, typeof(context))))