diff --git a/tdactor/td/actor/PromiseFuture.h b/tdactor/td/actor/PromiseFuture.h index 8f0310bfe..fb81bced1 100644 --- a/tdactor/td/actor/PromiseFuture.h +++ b/tdactor/td/actor/PromiseFuture.h @@ -32,6 +32,7 @@ class PromiseInterface { PromiseInterface(PromiseInterface &&) = default; PromiseInterface &operator=(PromiseInterface &&) = default; virtual ~PromiseInterface() = default; + virtual void set_value(T &&value) { set_result(std::move(value)); } @@ -45,15 +46,7 @@ class PromiseInterface { set_error(result.move_as_error()); } } - void operator()(T &&value) { - set_value(std::move(value)); - } - void operator()(Status &&error) { - set_error(std::move(error)); - } - void operator()(Result &&result) { - set_result(std::move(result)); - } + virtual bool is_cancellable() const { return false; } @@ -220,14 +213,6 @@ class Promise { promise_->set_result(std::move(result)); promise_.reset(); } - template - void operator()(S &&result) { - if (!promise_) { - return; - } - promise_->operator()(std::forward(result)); - promise_.reset(); - } void reset() { promise_.reset(); } diff --git a/test/online.cpp b/test/online.cpp index 458e4ba4e..97e39df26 100644 --- a/test/online.cpp +++ b/test/online.cpp @@ -160,7 +160,7 @@ class Task : public TestClient::Listener { void on_update(std::shared_ptr update) override { auto it = sent_queries_.find(update->id); if (it != sent_queries_.end()) { - it->second(std::move(update->object)); + it->second.set_value(std::move(update->object)); sent_queries_.erase(it); } process_update(update);