aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2025-01-27 17:20:11 +0300
committerlevlam <levlam@telegram.org>2025-01-27 17:20:11 +0300
commit0a273dd34c7effda248945563f5e5fd80e9f3fb4 (patch)
tree8b3811e93eae9fa576cdbe0f924f21f83e90d047
parent06d39cdc0d216cef370ba5331819192f2bf18f64 (diff)
Move fail_promise_map to tdutils.
-rw-r--r--td/telegram/MessagesManager.cpp16
-rw-r--r--td/telegram/StoryManager.cpp12
-rw-r--r--tdutils/td/utils/Promise.h10
3 files changed, 16 insertions, 22 deletions
diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp
index 534293e28..af1022b49 100644
--- a/td/telegram/MessagesManager.cpp
+++ b/td/telegram/MessagesManager.cpp
@@ -10214,18 +10214,10 @@ void MessagesManager::hangup() {
}
fail_promises(load_active_live_location_messages_queries_, Global::request_aborted_error());
- auto fail_promise_map = [](auto &queries) {
- while (!queries.empty()) {
- auto it = queries.begin();
- auto promises = std::move(it->second);
- queries.erase(it);
- fail_promises(promises, Global::request_aborted_error());
- }
- };
- fail_promise_map(get_dialog_queries_);
- fail_promise_map(load_scheduled_messages_from_database_queries_);
- fail_promise_map(run_after_get_channel_difference_);
- fail_promise_map(get_history_queries_);
+ fail_promise_map(get_dialog_queries_, Global::request_aborted_error());
+ fail_promise_map(load_scheduled_messages_from_database_queries_, Global::request_aborted_error());
+ fail_promise_map(run_after_get_channel_difference_, Global::request_aborted_error());
+ fail_promise_map(get_history_queries_, Global::request_aborted_error());
while (!pending_channel_on_get_dialogs_.empty()) {
auto it = pending_channel_on_get_dialogs_.begin();
auto queries = std::move(it->second);
diff --git a/td/telegram/StoryManager.cpp b/td/telegram/StoryManager.cpp
index 898728e37..cac614583 100644
--- a/td/telegram/StoryManager.cpp
+++ b/td/telegram/StoryManager.cpp
@@ -1633,16 +1633,8 @@ void StoryManager::timeout_expired() {
}
void StoryManager::hangup() {
- auto fail_promise_map = [](auto &queries) {
- while (!queries.empty()) {
- auto it = queries.begin();
- auto promises = std::move(it->second);
- queries.erase(it);
- fail_promises(promises, Global::request_aborted_error());
- }
- };
- fail_promise_map(reload_story_queries_);
- fail_promise_map(delete_yet_unsent_story_queries_);
+ fail_promise_map(reload_story_queries_, Global::request_aborted_error());
+ fail_promise_map(delete_yet_unsent_story_queries_, Global::request_aborted_error());
stop();
}
diff --git a/tdutils/td/utils/Promise.h b/tdutils/td/utils/Promise.h
index 630f1541b..9d5a34444 100644
--- a/tdutils/td/utils/Promise.h
+++ b/tdutils/td/utils/Promise.h
@@ -370,4 +370,14 @@ void fail_promises(vector<Promise<T>> &promises, Status &&error) {
moved_promises[size].set_error(std::move(error));
}
+template <class T>
+void fail_promise_map(T &promise_map, Status &&error) {
+ while (!promise_map.empty()) {
+ auto it = promise_map.begin();
+ auto promises = std::move(it->second);
+ promise_map.erase(it);
+ fail_promises(promises, error.clone());
+ }
+}
+
} // namespace td