Skip to content

Commit eafab25

Browse files
committed
LambdaSink: Allow passing a destructor callback
1 parent 90dfca3 commit eafab25

1 file changed

Lines changed: 14 additions & 5 deletions

File tree

src/libutil/include/nix/util/serialise.hh

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -381,18 +381,27 @@ struct LengthSource : Source
381381
*/
382382
struct LambdaSink : Sink
383383
{
384-
typedef std::function<void(std::string_view data)> lambda_t;
384+
typedef std::function<void(std::string_view data)> data_t;
385+
typedef std::function<void()> cleanup_t;
385386

386-
lambda_t lambda;
387+
data_t dataFun;
388+
cleanup_t cleanupFun;
387389

388-
LambdaSink(const lambda_t & lambda)
389-
: lambda(lambda)
390+
LambdaSink(
391+
const data_t & dataFun, const cleanup_t & cleanupFun = []() {})
392+
: dataFun(dataFun)
393+
, cleanupFun(cleanupFun)
394+
{
395+
}
396+
397+
~LambdaSink()
390398
{
399+
cleanupFun();
391400
}
392401

393402
void operator()(std::string_view data) override
394403
{
395-
lambda(data);
404+
dataFun(data);
396405
}
397406
};
398407

0 commit comments

Comments
 (0)