// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once #include "flushtask.h" namespace searchcorespi { template class LambdaFlushTask : public FlushTask { FunctionType _func; search::SerialNum _flushSerial; public: LambdaFlushTask(FunctionType &&func, search::SerialNum flushSerial) : _func(std::move(func)), _flushSerial(flushSerial) {} ~LambdaFlushTask() override = default; search::SerialNum getFlushSerial() const override { return _flushSerial; } void run() override { _func(); } }; template std::unique_ptr makeLambdaFlushTask(FunctionType &&function, search::SerialNum flushSerial) { return std::make_unique>> (std::forward(function), flushSerial); } }