aboutsummaryrefslogtreecommitdiffstats
path: root/searchcorespi
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-01-25 21:35:11 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2021-01-25 21:35:11 +0000
commitaa4ab9c8971d73fefc81bf76920c5f7c61561769 (patch)
tree437a18d5c29be4025fabad89ce8eb71a40112f2b /searchcorespi
parent5410d33fd8146623e2b380dcfe55530b232df336 (diff)
closure -> lambda
Diffstat (limited to 'searchcorespi')
-rw-r--r--searchcorespi/src/vespa/searchcorespi/flush/closureflushtask.h41
-rw-r--r--searchcorespi/src/vespa/searchcorespi/flush/lambdaflushtask.h31
-rw-r--r--searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.cpp4
3 files changed, 33 insertions, 43 deletions
diff --git a/searchcorespi/src/vespa/searchcorespi/flush/closureflushtask.h b/searchcorespi/src/vespa/searchcorespi/flush/closureflushtask.h
deleted file mode 100644
index 8d35a07806e..00000000000
--- a/searchcorespi/src/vespa/searchcorespi/flush/closureflushtask.h
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#pragma once
-
-#include "flushtask.h"
-#include <vespa/vespalib/util/closure.h>
-
-namespace searchcorespi {
-
-class ClosureFlushTask : public FlushTask
-{
- std::unique_ptr<vespalib::Closure> _closure;
- search::SerialNum _flushSerial;
-
-public:
- ClosureFlushTask(std::unique_ptr<vespalib::Closure> closure,
- search::SerialNum flushSerial)
- : _closure(std::move(closure)),
- _flushSerial(flushSerial)
- {
- }
-
- search::SerialNum getFlushSerial() const override {
- return _flushSerial;
- }
-
- void run() override {
- _closure->call();
- }
-};
-
-/**
- * Wraps a Closure as a FlushTask
- **/
-static inline FlushTask::UP
-makeFlushTask(std::unique_ptr<vespalib::Closure> closure,
- search::SerialNum flushSerial)
-{
- return FlushTask::UP(new ClosureFlushTask(std::move(closure), flushSerial));
-}
-
-} // namespace searchcorespi
diff --git a/searchcorespi/src/vespa/searchcorespi/flush/lambdaflushtask.h b/searchcorespi/src/vespa/searchcorespi/flush/lambdaflushtask.h
new file mode 100644
index 00000000000..fc860a4292f
--- /dev/null
+++ b/searchcorespi/src/vespa/searchcorespi/flush/lambdaflushtask.h
@@ -0,0 +1,31 @@
+// Copyright 2017 Yahoo Holdings. 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 FunctionType>
+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 <class FunctionType>
+std::unique_ptr<FlushTask>
+makeLambdaFlushTask(FunctionType &&function, search::SerialNum flushSerial)
+{
+ return std::make_unique<LambdaFlushTask<std::decay_t<FunctionType>>>
+ (std::forward<FunctionType>(function), flushSerial);
+}
+
+}
diff --git a/searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.cpp b/searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.cpp
index b8bc4832202..348dbc97f25 100644
--- a/searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.cpp
+++ b/searchcorespi/src/vespa/searchcorespi/index/indexmaintainer.cpp
@@ -9,7 +9,7 @@
#include "indexreadutilities.h"
#include "indexwriteutilities.h"
#include <vespa/fastos/file.h>
-#include <vespa/searchcorespi/flush/closureflushtask.h>
+#include <vespa/searchcorespi/flush/lambdaflushtask.h>
#include <vespa/searchlib/common/i_flush_token.h>
#include <vespa/searchlib/index/schemautil.h>
#include <vespa/searchlib/util/dirtraverse.h>
@@ -960,7 +960,7 @@ IndexMaintainer::initFlush(SerialNum serialNum, searchcorespi::FlushStats * stat
return FlushTask::UP();
}
SerialNum realSerialNum = args.flush_serial_num;
- return makeFlushTask(makeClosure(this, &IndexMaintainer::doFlush, std::move(args)), realSerialNum);
+ return makeLambdaFlushTask([this, myargs=std::move(args)]() mutable { doFlush(std::move(myargs)); }, realSerialNum);
}
FusionSpec