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 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) LambdaSink(
: lambda(lambda) const data_t & dataFun, const cleanup_t & cleanupFun = []() {})
: dataFun(dataFun)
, cleanupFun(cleanupFun)
{ {
} }
~LambdaSink()
{
cleanupFun();
}
void operator()(std::string_view data) override void operator()(std::string_view data) override
{ {
lambda(data); dataFun(data);
} }
}; };