From b9473decc2505da673c3dee0f06f278a7d649577 Mon Sep 17 00:00:00 2001 From: levlam Date: Tue, 11 Jul 2023 17:53:43 +0300 Subject: [PATCH] Always list actor_id first in lambda capture. --- td/telegram/FileReferenceManager.cpp | 6 +++--- td/telegram/MessagesManager.cpp | 17 +++++++++-------- td/telegram/PasswordManager.cpp | 14 +++++++------- td/telegram/PollManager.cpp | 4 ++-- td/telegram/Td.cpp | 4 ++-- td/telegram/Td.h | 2 +- td/telegram/files/FileManager.cpp | 6 +++--- td/telegram/net/ConnectionCreator.cpp | 4 ++-- 8 files changed, 29 insertions(+), 28 deletions(-) diff --git a/td/telegram/FileReferenceManager.cpp b/td/telegram/FileReferenceManager.cpp index 102634f70..3d378d21a 100644 --- a/td/telegram/FileReferenceManager.cpp +++ b/td/telegram/FileReferenceManager.cpp @@ -295,9 +295,9 @@ void FileReferenceManager::send_query(Destination dest, FileSourceId file_source auto &node = add_node(dest.node_id); node.query->active_queries++; - auto promise = PromiseCreator::lambda([dest, file_source_id, actor_id = actor_id(this), - file_manager_actor_id = G()->file_manager()](Result result) { - auto new_promise = PromiseCreator::lambda([dest, file_source_id, actor_id](Result result) { + auto promise = PromiseCreator::lambda([actor_id = actor_id(this), file_manager_actor_id = G()->file_manager(), dest, + file_source_id](Result result) { + auto new_promise = PromiseCreator::lambda([actor_id, dest, file_source_id](Result result) { Status status; if (result.is_error()) { status = result.move_as_error(); diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index 8140120cc..ce7f4da93 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -23442,9 +23442,10 @@ void MessagesManager::get_history_from_the_end_impl(const Dialog *d, bool from_d db_query.from_message_id = MessageId::max(); db_query.limit = limit; G()->td_db()->get_message_db_async()->get_messages( - db_query, PromiseCreator::lambda([dialog_id, old_last_database_message_id = d->last_database_message_id, - only_local, limit, actor_id = actor_id(this), promise = std::move(promise)]( - vector messages) mutable { + db_query, + PromiseCreator::lambda([actor_id = actor_id(this), dialog_id, + old_last_database_message_id = d->last_database_message_id, only_local, limit, + promise = std::move(promise)](vector messages) mutable { send_closure(actor_id, &MessagesManager::on_get_history_from_database, dialog_id, MessageId::max(), old_last_database_message_id, 0, limit, true, only_local, std::move(messages), std::move(promise)); @@ -23497,8 +23498,8 @@ void MessagesManager::get_history_impl(const Dialog *d, MessageId from_message_i db_query.limit = limit; G()->td_db()->get_message_db_async()->get_messages( db_query, - PromiseCreator::lambda([dialog_id, from_message_id, old_last_database_message_id = d->last_database_message_id, - offset, limit, only_local, actor_id = actor_id(this), + PromiseCreator::lambda([actor_id = actor_id(this), dialog_id, from_message_id, + old_last_database_message_id = d->last_database_message_id, offset, limit, only_local, promise = std::move(promise)](vector messages) mutable { send_closure(actor_id, &MessagesManager::on_get_history_from_database, dialog_id, from_message_id, old_last_database_message_id, offset, limit, false, only_local, std::move(messages), @@ -23647,7 +23648,7 @@ void MessagesManager::load_dialog_scheduled_messages(DialogId dialog_id, bool fr if (queries.size() == 1) { G()->td_db()->get_message_db_async()->get_scheduled_messages( dialog_id, 1000, - PromiseCreator::lambda([dialog_id, actor_id = actor_id(this)](vector messages) { + PromiseCreator::lambda([actor_id = actor_id(this), dialog_id](vector messages) { send_closure(actor_id, &MessagesManager::on_get_scheduled_messages_from_database, dialog_id, std::move(messages)); })); @@ -29736,8 +29737,8 @@ void MessagesManager::remove_message_notification(DialogId dialog_id, Notificati if (G()->use_message_database()) { G()->td_db()->get_message_db_async()->get_messages_from_notification_id( dialog_id, NotificationId(notification_id.get() + 1), 1, - PromiseCreator::lambda([dialog_id, from_mentions, notification_id, - actor_id = actor_id(this)](vector result) { + PromiseCreator::lambda([actor_id = actor_id(this), dialog_id, from_mentions, + notification_id](vector result) { send_closure(actor_id, &MessagesManager::do_remove_message_notification, dialog_id, from_mentions, notification_id, std::move(result)); })); diff --git a/td/telegram/PasswordManager.cpp b/td/telegram/PasswordManager.cpp index c8de3a6ad..cffe24c63 100644 --- a/td/telegram/PasswordManager.cpp +++ b/td/telegram/PasswordManager.cpp @@ -244,8 +244,8 @@ void PasswordManager::do_get_secure_secret(bool allow_recursive, string password return promise.set_error(Status::Error(400, "PASSWORD_HASH_INVALID")); } get_full_state( - password, PromiseCreator::lambda([password, allow_recursive, promise = std::move(promise), - actor_id = actor_id(this)](Result r_state) mutable { + password, PromiseCreator::lambda([actor_id = actor_id(this), password, allow_recursive, + promise = std::move(promise)](Result r_state) mutable { if (r_state.is_error()) { return promise.set_error(r_state.move_as_error()); } @@ -262,7 +262,7 @@ void PasswordManager::do_get_secure_secret(bool allow_recursive, string password } auto new_promise = - PromiseCreator::lambda([password, promise = std::move(promise), actor_id](Result r_ok) mutable { + PromiseCreator::lambda([actor_id, password, promise = std::move(promise)](Result r_ok) mutable { if (r_ok.is_error()) { return promise.set_error(r_ok.move_as_error()); } @@ -302,8 +302,8 @@ void PasswordManager::create_temp_password(string password, int32 timeout, Promi send_closure(actor_id, &PasswordManager::on_finish_create_temp_password, std::move(result), false); }); - do_get_state(PromiseCreator::lambda([password = std::move(password), timeout, promise = std::move(new_promise), - actor_id = actor_id(this)](Result r_state) mutable { + do_get_state(PromiseCreator::lambda([actor_id = actor_id(this), password = std::move(password), timeout, + promise = std::move(new_promise)](Result r_state) mutable { if (r_state.is_error()) { return promise.set_error(r_state.move_as_error()); } @@ -350,8 +350,8 @@ void PasswordManager::get_full_state(string password, Promise send_closure(G()->config_manager(), &ConfigManager::hide_suggested_action, SuggestedAction{SuggestedAction::Type::CheckPassword}); - do_get_state(PromiseCreator::lambda([password = std::move(password), promise = std::move(promise), - actor_id = actor_id(this)](Result r_state) mutable { + do_get_state(PromiseCreator::lambda([actor_id = actor_id(this), password = std::move(password), + promise = std::move(promise)](Result r_state) mutable { if (r_state.is_error()) { return promise.set_error(r_state.move_as_error()); } diff --git a/td/telegram/PollManager.cpp b/td/telegram/PollManager.cpp index 0c3b221dc..59659cba2 100644 --- a/td/telegram/PollManager.cpp +++ b/td/telegram/PollManager.cpp @@ -919,7 +919,7 @@ void PollManager::do_set_poll_answer(PollId poll_id, FullMessageId full_message_ notify_on_poll_update(poll_id); auto query_promise = PromiseCreator::lambda( - [poll_id, generation, actor_id = actor_id(this)](Result> &&result) { + [actor_id = actor_id(this), poll_id, generation](Result> &&result) { send_closure(actor_id, &PollManager::on_set_poll_answer, poll_id, generation, std::move(result)); }); td_->create_handler(std::move(query_promise)) @@ -1327,7 +1327,7 @@ void PollManager::on_update_poll_timeout(PollId poll_id) { auto full_message_id = server_poll_messages_[poll_id].get_random(); LOG(INFO) << "Fetching results of " << poll_id << " from " << full_message_id; - auto query_promise = PromiseCreator::lambda([poll_id, generation = current_generation_, actor_id = actor_id(this)]( + auto query_promise = PromiseCreator::lambda([actor_id = actor_id(this), poll_id, generation = current_generation_]( Result> &&result) { send_closure(actor_id, &PollManager::on_get_poll_results, poll_id, generation, std::move(result)); }); diff --git a/td/telegram/Td.cpp b/td/telegram/Td.cpp index 5acd328ab..981167ae6 100644 --- a/td/telegram/Td.cpp +++ b/td/telegram/Td.cpp @@ -4080,7 +4080,7 @@ void Td::answer_ok_query(uint64 id, Status status) { } Promise Td::create_ok_request_promise(uint64 id) { - return PromiseCreator::lambda([id = id, actor_id = actor_id(this)](Result result) { + return PromiseCreator::lambda([actor_id = actor_id(this), id](Result result) { if (result.is_error()) { send_closure(actor_id, &Td::send_error, id, result.move_as_error()); } else { @@ -8611,7 +8611,7 @@ void Td::on_request(uint64 id, td_api::assignGooglePlayTransaction &request) { void Td::on_request(uint64 id, td_api::acceptTermsOfService &request) { CHECK_IS_USER(); CLEAN_INPUT_STRING(request.terms_of_service_id_); - auto promise = PromiseCreator::lambda([id = id, actor_id = actor_id(this)](Result<> result) { + auto promise = PromiseCreator::lambda([actor_id = actor_id(this), id](Result<> result) { if (result.is_error()) { send_closure(actor_id, &Td::send_error, id, result.move_as_error()); } else { diff --git a/td/telegram/Td.h b/td/telegram/Td.h index d2ffebbaf..bce198083 100644 --- a/td/telegram/Td.h +++ b/td/telegram/Td.h @@ -394,7 +394,7 @@ class Td final : public Actor { template Promise create_request_promise(uint64 id) { - return PromiseCreator::lambda([id = id, actor_id = actor_id(this)](Result r_state) { + return PromiseCreator::lambda([actor_id = actor_id(this), id](Result r_state) { if (r_state.is_error()) { send_closure(actor_id, &Td::send_error, id, r_state.move_as_error()); } else { diff --git a/td/telegram/files/FileManager.cpp b/td/telegram/files/FileManager.cpp index a2285e36a..d29d07094 100644 --- a/td/telegram/files/FileManager.cpp +++ b/td/telegram/files/FileManager.cpp @@ -2481,7 +2481,7 @@ void FileManager::run_download(FileNodePtr node, bool force_update_priority) { QueryId query_id = queries_container_.create(Query{file_id, Query::Type::DownloadReloadDialog}); node->download_id_ = query_id; context_->reload_photo(file_view.remote_location().get_source(), - PromiseCreator::lambda([query_id, actor_id = actor_id(this), file_id](Result res) { + PromiseCreator::lambda([actor_id = actor_id(this), query_id, file_id](Result res) { Status error; if (res.is_ok()) { error = Status::Error("FILE_DOWNLOAD_ID_INVALID"); @@ -2507,7 +2507,7 @@ void FileManager::run_download(FileNodePtr node, bool force_update_priority) { node->download_was_update_file_reference_ = true; context_->repair_file_reference( - file_id, PromiseCreator::lambda([query_id, actor_id = actor_id(this), file_id](Result res) { + file_id, PromiseCreator::lambda([actor_id = actor_id(this), query_id, file_id](Result res) { Status error; if (res.is_ok()) { error = Status::Error("FILE_DOWNLOAD_RESTART_WITH_FILE_REFERENCE"); @@ -3011,7 +3011,7 @@ void FileManager::run_upload(FileNodePtr node, vector bad_parts) { node->upload_was_update_file_reference_ = true; context_->repair_file_reference(node->main_file_id_, - PromiseCreator::lambda([query_id, actor_id = actor_id(this)](Result res) { + PromiseCreator::lambda([actor_id = actor_id(this), query_id](Result res) { send_closure(actor_id, &FileManager::on_error, query_id, Status::Error("FILE_UPLOAD_RESTART_WITH_FILE_REFERENCE")); })); diff --git a/td/telegram/net/ConnectionCreator.cpp b/td/telegram/net/ConnectionCreator.cpp index c7742eb64..3e3bae647 100644 --- a/td/telegram/net/ConnectionCreator.cpp +++ b/td/telegram/net/ConnectionCreator.cpp @@ -343,7 +343,7 @@ void ConnectionCreator::ping_proxy_resolved(int32 proxy_id, IPAddress ip_address auto socket_fd = r_socket_fd.move_as_ok(); auto connection_promise = PromiseCreator::lambda( - [ip_address, promise = std::move(promise), actor_id = actor_id(this), transport_type = extra.transport_type, + [actor_id = actor_id(this), ip_address, promise = std::move(promise), transport_type = extra.transport_type, debug_str = extra.debug_str](Result r_connection_data) mutable { if (r_connection_data.is_error()) { return promise.set_error(Status::Error(400, r_connection_data.error().public_message())); @@ -619,7 +619,7 @@ void ConnectionCreator::request_raw_connection_by_ip(IPAddress ip_address, mtpro } auto socket_fd = r_socket_fd.move_as_ok(); - auto connection_promise = PromiseCreator::lambda([promise = std::move(promise), actor_id = actor_id(this), + auto connection_promise = PromiseCreator::lambda([actor_id = actor_id(this), promise = std::move(promise), transport_type, network_generation = network_generation_, ip_address](Result r_connection_data) mutable { if (r_connection_data.is_error()) {