diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-01-21 12:23:47 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-01-21 12:30:27 +0000 |
commit | 350ef35c38f276354991ad1444f5500d07b57802 (patch) | |
tree | 9db68b138ea32e5cadb8cd049bd8b0aa52311a1d /vespalib | |
parent | 29970d8a10da432c379bdcdecc96ab01c751dc83 (diff) |
Add DummyBucketExecutor for use in testing.
Diffstat (limited to 'vespalib')
-rw-r--r-- | vespalib/src/vespa/vespalib/util/destructor_callbacks.h | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/vespalib/src/vespa/vespalib/util/destructor_callbacks.h b/vespalib/src/vespa/vespalib/util/destructor_callbacks.h index fc0d23fa177..211105127cf 100644 --- a/vespalib/src/vespa/vespalib/util/destructor_callbacks.h +++ b/vespalib/src/vespa/vespalib/util/destructor_callbacks.h @@ -8,25 +8,46 @@ namespace vespalib { class Gate; -class GateCallback : public vespalib::IDestructorCallback { +class GateCallback : public IDestructorCallback { public: - GateCallback(vespalib::Gate & gate) noexcept : _gate(gate) {} + explicit GateCallback(vespalib::Gate & gate) noexcept : _gate(gate) {} ~GateCallback() override; private: vespalib::Gate & _gate; }; -class IgnoreCallback : public vespalib::IDestructorCallback { +class IgnoreCallback : public IDestructorCallback { public: IgnoreCallback() noexcept { } ~IgnoreCallback() override = default; }; template <typename T> -struct KeepAlive : public vespalib::IDestructorCallback { +struct KeepAlive : public IDestructorCallback { explicit KeepAlive(T toKeep) noexcept : _toKeep(std::move(toKeep)) { } ~KeepAlive() override = default; T _toKeep; }; +template<class FunctionType> +class LambdaCallback : public IDestructorCallback { +public: + explicit LambdaCallback(FunctionType &&func) noexcept + : _func(std::move(func)) + {} + ~LambdaCallback() { + _func(); + } +private: + FunctionType _func; +}; + +template<class FunctionType> +std::shared_ptr<IDestructorCallback> +makeLambdaCallback(FunctionType &&function) { + return std::make_shared<LambdaCallback<std::decay_t<FunctionType>>> + (std::forward<FunctionType>(function)); +} + + } |