1
1
Fork 0
mirror of https://github.com/NixOS/nix.git synced 2025-11-28 21:21:00 +01:00

LambdaSink: Allow passing a destructor callback

This commit is contained in:
Eelco Dolstra 2025-11-25 13:29:29 +01:00
parent d1470f76c7
commit d7b6afecdb

View file

@ -447,18 +447,27 @@ struct LengthSource : Source
*/
struct LambdaSink : Sink
{
typedef std::function<void(std::string_view data)> lambda_t;
typedef std::function<void(std::string_view data)> data_t;
typedef std::function<void()> cleanup_t;
lambda_t lambda;
data_t dataFun;
cleanup_t cleanupFun;
LambdaSink(const lambda_t & lambda)
: lambda(lambda)
LambdaSink(
const data_t & dataFun, const cleanup_t & cleanupFun = []() {})
: dataFun(dataFun)
, cleanupFun(cleanupFun)
{
}
~LambdaSink()
{
cleanupFun();
}
void operator()(std::string_view data) override
{
lambda(data);
dataFun(data);
}
};