Skip to content

Commit d0ec5ec

Browse files
committed
ssx/thread_worker: Allow function that return void
Signed-off-by: Ben Pope <[email protected]>
1 parent b0085fa commit d0ec5ec

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

src/v/ssx/thread_worker.h

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
#include <exception>
3131
#include <memory>
3232
#include <thread>
33+
#include <type_traits>
3334

3435
namespace ssx {
3536

@@ -64,19 +65,22 @@ class worker_task final : public task_base {
6465

6566
void process(ss::alien::instance& alien, ss::shard_id shard) final {
6667
try {
67-
set_value(alien, shard, _func());
68+
if constexpr (std::is_void_v<value_type>) {
69+
_func();
70+
ss::alien::run_on(
71+
alien, shard, [this]() { _promise.set_value(); });
72+
} else {
73+
auto v = _func();
74+
ss::alien::run_on(
75+
alien, shard, [this, v{std::move(v)}]() mutable {
76+
_promise.set_value(std::move(v));
77+
});
78+
}
6879
} catch (...) {
6980
set_exception(alien, shard, std::current_exception());
7081
};
7182
}
7283

73-
void
74-
set_value(ss::alien::instance& alien, ss::shard_id shard, value_type v) {
75-
ss::alien::run_on(alien, shard, [this, v{std::move(v)}]() mutable {
76-
_promise.set_value(std::move(v));
77-
});
78-
}
79-
8084
void set_exception(
8185
ss::alien::instance& alien,
8286
ss::shard_id shard,

0 commit comments

Comments
 (0)