Skip to content

Commit

Permalink
Process request result in MessagesManager actor context.
Browse files Browse the repository at this point in the history
  • Loading branch information
levlam committed Aug 21, 2022
1 parent 092499a commit acbc2ce
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 10 deletions.
27 changes: 17 additions & 10 deletions td/telegram/MessagesManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9393,7 +9393,7 @@ void MessagesManager::after_get_difference() {
if (!have_input_peer(dialog_id, AccessRights::Read) ||
(d != nullptr &&
message_id <= td::max(d->last_clear_history_message_id, d->max_unavailable_message_id))) {
update_message_ids_to_delete.push_back(it.first);
update_message_ids_to_delete.push_back(full_message_id);
}
break;
}
Expand All @@ -9408,15 +9408,13 @@ void MessagesManager::after_get_difference() {
dump_debug_message_op(get_dialog(dialog_id));
}
if (message_id <= d->last_new_message_id) {
get_message_from_server(it.first, PromiseCreator::lambda([full_message_id](Result<Unit> result) {
if (result.is_error()) {
LOG(WARNING)
<< "Failed to get missing " << full_message_id << ": " << result.error();
} else {
LOG(WARNING) << "Successfully get missing " << full_message_id;
}
}),
"get missing");
get_message_from_server(
full_message_id,
PromiseCreator::lambda([actor_id = actor_id(this), full_message_id](Result<Unit> result) {
send_closure(actor_id, &MessagesManager::on_restore_missing_message_after_get_difference,
full_message_id, std::move(result));
}),
"get missing");
} else if (dialog_id.get_type() == DialogType::Channel) {
LOG(INFO) << "Schedule getDifference in " << dialog_id.get_channel_id();
channel_get_difference_retry_timeout_.add_timeout_in(dialog_id.get(), 0.001);
Expand Down Expand Up @@ -9452,6 +9450,15 @@ void MessagesManager::after_get_difference() {
}
}

void MessagesManager::on_restore_missing_message_after_get_difference(FullMessageId full_message_id,
Result<Unit> result) {
if (result.is_error()) {
LOG(WARNING) << "Failed to get missing " << full_message_id << ": " << result.error();
} else {
LOG(WARNING) << "Successfully get missing " << full_message_id;
}
}

void MessagesManager::on_get_empty_messages(DialogId dialog_id, const vector<MessageId> &empty_message_ids) {
if (!empty_message_ids.empty()) {
delete_dialog_messages(dialog_id, empty_message_ids, true, true, "on_get_empty_messages");
Expand Down
2 changes: 2 additions & 0 deletions td/telegram/MessagesManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -2950,6 +2950,8 @@ class MessagesManager final : public Actor {
void ttl_db_loop(double server_now);
void ttl_db_on_result(Result<std::pair<std::vector<MessagesDbMessage>, int32>> r_result, bool dummy);

void on_restore_missing_message_after_get_difference(FullMessageId full_message_id, Result<Unit> result);

void on_get_message_link_dialog(MessageLinkInfo &&info, Promise<MessageLinkInfo> &&promise);

void on_get_message_link_message(MessageLinkInfo &&info, DialogId dialog_id, Promise<MessageLinkInfo> &&promise);
Expand Down

0 comments on commit acbc2ce

Please sign in to comment.