From e39757b6ec5fce18d8bb9da61e8c655998a39b65 Mon Sep 17 00:00:00 2001 From: levlam Date: Tue, 2 May 2023 23:49:59 +0300 Subject: [PATCH] Make OrderedMessage.message_id_ private. --- td/telegram/MessagesManager.cpp | 88 +++++++++++++++++---------------- td/telegram/OrderedMessage.h | 6 ++- 2 files changed, 50 insertions(+), 44 deletions(-) diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index cae66805b..e3d1a9479 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -10045,7 +10045,7 @@ void MessagesManager::on_get_history(DialogId dialog_id, MessageId from_message_ auto it = d->ordered_messages.get_const_iterator(d->last_message_id); MessageId new_first_database_message_id; while (*it != nullptr) { - auto message_id = (*it)->message_id_; + auto message_id = (*it)->get_message_id(); if (message_id.is_server() || message_id.is_local()) { if (!d->last_database_message_id.is_valid()) { set_dialog_last_database_message_id(d, message_id, "on_get_history"); @@ -10071,10 +10071,10 @@ void MessagesManager::on_get_history(DialogId dialog_id, MessageId from_message_ CHECK(d->first_database_message_id.is_valid()); { auto it = d->ordered_messages.get_const_iterator(d->first_database_message_id); - if (*it != nullptr && ((*it)->message_id_ == d->first_database_message_id || (*it)->have_next_)) { + if (*it != nullptr && ((*it)->get_message_id() == d->first_database_message_id || (*it)->have_next_)) { MessageId new_first_database_message_id = d->first_database_message_id; while (*it != nullptr) { - auto message_id = (*it)->message_id_; + auto message_id = (*it)->get_message_id(); if ((message_id.is_server() || message_id.is_local()) && message_id < new_first_database_message_id) { new_first_database_message_id = message_id; try_restore_dialog_reply_markup(d, get_message(d, message_id)); @@ -10088,10 +10088,10 @@ void MessagesManager::on_get_history(DialogId dialog_id, MessageId from_message_ } { auto it = d->ordered_messages.get_const_iterator(d->last_database_message_id); - if (*it != nullptr && ((*it)->message_id_ == d->last_database_message_id || (*it)->have_next_)) { + if (*it != nullptr && ((*it)->get_message_id() == d->last_database_message_id || (*it)->have_next_)) { MessageId new_last_database_message_id = d->last_database_message_id; while (*it != nullptr) { - auto message_id = (*it)->message_id_; + auto message_id = (*it)->get_message_id(); if ((message_id.is_server() || message_id.is_local()) && message_id > new_last_database_message_id) { new_last_database_message_id = message_id; } @@ -12376,19 +12376,19 @@ int32 MessagesManager::calc_new_unread_count_from_last_unread(Dialog *d, Message MessageType type) const { CHECK(!max_message_id.is_scheduled()); auto it = d->ordered_messages.get_const_iterator(max_message_id); - if (*it == nullptr || (*it)->message_id_ != max_message_id) { + if (*it == nullptr || (*it)->get_message_id() != max_message_id) { return -1; } int32 unread_count = type == MessageType::Server ? d->server_unread_count : d->local_unread_count; - while (*it != nullptr && (*it)->message_id_ > d->last_read_inbox_message_id) { - auto message_id = (*it)->message_id_; + while (*it != nullptr && (*it)->get_message_id() > d->last_read_inbox_message_id) { + auto message_id = (*it)->get_message_id(); if (message_id.get_type() == type && has_incoming_notification(d->dialog_id, get_message(d, message_id))) { unread_count--; } --it; } - if (*it == nullptr || (*it)->message_id_ != d->last_read_inbox_message_id) { + if (*it == nullptr || (*it)->get_message_id() != d->last_read_inbox_message_id) { return -1; } @@ -12401,8 +12401,8 @@ int32 MessagesManager::calc_new_unread_count_from_the_end(Dialog *d, MessageId m CHECK(!max_message_id.is_scheduled()); int32 unread_count = 0; auto it = d->ordered_messages.get_const_iterator(MessageId::max()); - while (*it != nullptr && (*it)->message_id_ > max_message_id) { - auto message_id = (*it)->message_id_; + while (*it != nullptr && (*it)->get_message_id() > max_message_id) { + auto message_id = (*it)->get_message_id(); if (message_id.get_type() == type && has_incoming_notification(d->dialog_id, get_message(d, message_id))) { unread_count++; } @@ -13302,9 +13302,9 @@ void MessagesManager::ttl_read_history_impl(DialogId dialog_id, bool is_outgoing auto *d = get_dialog(dialog_id); CHECK(d != nullptr); auto now = Time::now(); - for (auto it = d->ordered_messages.get_const_iterator(from_message_id); *it && (*it)->message_id_ >= till_message_id; - --it) { - auto *m = get_message(d, (*it)->message_id_); + for (auto it = d->ordered_messages.get_const_iterator(from_message_id); + *it && (*it)->get_message_id() >= till_message_id; --it) { + auto *m = get_message(d, (*it)->get_message_id()); CHECK(m != nullptr); if (m->is_outgoing == is_outgoing) { ttl_on_view(d, m, view_date, now); @@ -14045,7 +14045,8 @@ void MessagesManager::read_secret_chat_outbox_inner(DialogId dialog_id, int32 up CHECK(d != nullptr); auto end = d->ordered_messages.get_const_iterator(MessageId::max()); - while (*end && (get_message(d, (*end)->message_id_)->date > up_to_date || (*end)->message_id_.is_yet_unsent())) { + while (*end && + (get_message(d, (*end)->get_message_id())->date > up_to_date || (*end)->get_message_id().is_yet_unsent())) { --end; } if (!*end) { @@ -14053,7 +14054,7 @@ void MessagesManager::read_secret_chat_outbox_inner(DialogId dialog_id, int32 up << ": no messages with such date are known"; return; } - auto max_message_id = (*end)->message_id_; + auto max_message_id = (*end)->get_message_id(); read_history_outbox(dialog_id, max_message_id, read_date); } @@ -16204,9 +16205,9 @@ void MessagesManager::fix_dialog_last_notification_id(Dialog *d, bool from_menti auto &group_info = get_notification_group_info(d, from_mentions); VLOG(notifications) << "Trying to fix last notification identifier in " << group_info.group_id << " from " << d->dialog_id << " from " << message_id << "/" << group_info.last_notification_id; - if (*it != nullptr && ((*it)->message_id_ == message_id || (*it)->have_next_)) { + if (*it != nullptr && ((*it)->get_message_id() == message_id || (*it)->have_next_)) { while (*it != nullptr) { - const Message *m = get_message(d, (*it)->message_id_); + const Message *m = get_message(d, (*it)->get_message_id()); if (is_from_mention_notification_group(m) == from_mentions && m->notification_id.is_valid() && is_message_notification_active(d, m) && m->message_id != message_id) { bool is_fixed = set_dialog_last_notification(d->dialog_id, group_info, m->date, m->notification_id, @@ -16331,7 +16332,7 @@ unique_ptr MessagesManager::do_delete_message(Dialog * const auto message_it = d->ordered_messages.get_iterator(message_id); CHECK(*message_it != nullptr); - CHECK((*message_it)->message_id_ == message_id); + CHECK((*message_it)->get_message_id() == message_id); bool need_get_history = false; if (!only_from_memory) { @@ -16347,7 +16348,7 @@ unique_ptr MessagesManager::do_delete_message(Dialog * auto it = message_it; --it; if (*it != nullptr) { - set_dialog_last_message_id(d, (*it)->message_id_, "do_delete_message"); + set_dialog_last_message_id(d, (*it)->get_message_id(), "do_delete_message"); } else { LOG(ERROR) << "Have have_previous is true, but there is no previous for " << full_message_id << " from " << source; @@ -16368,18 +16369,19 @@ unique_ptr MessagesManager::do_delete_message(Dialog * auto it = message_it; while ((*it)->have_previous_) { --it; - if (*it == nullptr || !(*it)->message_id_.is_yet_unsent()) { + if (*it == nullptr || !(*it)->get_message_id().is_yet_unsent()) { break; } } if (*it != nullptr) { - if (!(*it)->message_id_.is_yet_unsent() && (*it)->message_id_ != d->last_database_message_id) { - if ((*it)->message_id_ < d->first_database_message_id && d->dialog_id.get_type() == DialogType::Channel) { + if (!(*it)->get_message_id().is_yet_unsent() && (*it)->get_message_id() != d->last_database_message_id) { + if ((*it)->get_message_id() < d->first_database_message_id && + d->dialog_id.get_type() == DialogType::Channel) { // possible if messages was deleted from database, but not from memory after updateChannelTooLong set_dialog_last_database_message_id(d, MessageId(), "do_delete_message 1"); } else { - set_dialog_last_database_message_id(d, (*it)->message_id_, "do_delete_message 2"); + set_dialog_last_database_message_id(d, (*it)->get_message_id(), "do_delete_message 2"); if (d->last_database_message_id < d->first_database_message_id) { LOG(ERROR) << "Last database " << d->last_database_message_id << " became less than first database " << d->first_database_message_id << " after deletion of " << full_message_id; @@ -16410,7 +16412,7 @@ unique_ptr MessagesManager::do_delete_message(Dialog * if ((*it)->have_previous_) { --it; if (*it != nullptr) { - suffix_load_queries_it->second->suffix_load_first_message_id_ = (*it)->message_id_; + suffix_load_queries_it->second->suffix_load_first_message_id_ = (*it)->get_message_id(); } else { LOG(ERROR) << "Have have_previous is true, but there is no previous for " << full_message_id << " from " << source; @@ -17267,7 +17269,7 @@ void MessagesManager::mark_dialog_as_read(Dialog *d) { if (d->server_unread_count + d->local_unread_count > 0 && d->last_message_id.is_valid()) { auto it = d->ordered_messages.get_const_iterator(d->last_message_id); while (*it != nullptr) { - auto message_id = (*it)->message_id_; + auto message_id = (*it)->get_message_id(); if (message_id.is_server() || message_id.is_local()) { read_dialog_inbox(d, message_id); break; @@ -20466,8 +20468,8 @@ void MessagesManager::open_dialog(Dialog *d) { auto min_message_id = MessageId(ServerMessageId(1)); if (d->last_message_id == MessageId() && d->last_read_outbox_message_id < min_message_id) { auto it = d->ordered_messages.get_const_iterator(MessageId::max()); - if (*it != nullptr && (*it)->message_id_ < min_message_id) { - read_history_inbox(dialog_id, (*it)->message_id_, -1, "open_dialog"); + if (*it != nullptr && (*it)->get_message_id() < min_message_id) { + read_history_inbox(dialog_id, (*it)->get_message_id(), -1, "open_dialog"); } } @@ -21042,7 +21044,7 @@ tl_object_ptr MessagesManager::get_dialog_history(DialogId dia << ", have_full_history_source = " << d->have_full_history_source; auto p = d->ordered_messages.get_const_iterator(from_message_id); - LOG(DEBUG) << "Iterator points to " << (*p ? (*p)->message_id_ : MessageId()); + LOG(DEBUG) << "Iterator points to " << (*p ? (*p)->get_message_id() : MessageId()); bool from_the_end = (d->last_message_id != MessageId() && from_message_id > d->last_message_id) || from_message_id >= MessageId::max(); @@ -21071,9 +21073,9 @@ tl_object_ptr MessagesManager::get_dialog_history(DialogId dia } else { have_a_gap = true; } - } else if ((*p)->message_id_ != from_message_id) { - CHECK((*p)->message_id_ < from_message_id); - if (!(*p)->have_next_ && (d->last_message_id == MessageId() || (*p)->message_id_ < d->last_message_id)) { + } else if ((*p)->get_message_id() != from_message_id) { + CHECK((*p)->get_message_id() < from_message_id); + if (!(*p)->have_next_ && (d->last_message_id == MessageId() || (*p)->get_message_id() < d->last_message_id)) { have_a_gap = true; } } @@ -21082,7 +21084,7 @@ tl_object_ptr MessagesManager::get_dialog_history(DialogId dia LOG(INFO) << "Have a gap near message to get chat history from"; p = OrderedMessages::ConstIterator(); } - if (*p != nullptr && (*p)->message_id_ == from_message_id) { + if (*p != nullptr && (*p)->get_message_id() == from_message_id) { if (offset < 0) { offset++; } else { @@ -21094,7 +21096,7 @@ tl_object_ptr MessagesManager::get_dialog_history(DialogId dia ++p; if (*p) { ++offset; - from_message_id = (*p)->message_id_; + from_message_id = (*p)->get_message_id(); } } @@ -21111,12 +21113,12 @@ tl_object_ptr MessagesManager::get_dialog_history(DialogId dia } } - LOG(INFO) << "Iterator after applying offset points to " << (*p ? (*p)->message_id_ : MessageId()) + LOG(INFO) << "Iterator after applying offset points to " << (*p ? (*p)->get_message_id() : MessageId()) << ", offset = " << offset << ", limit = " << limit << ", from_the_end = " << from_the_end; vector> messages; if (*p != nullptr && offset == 0) { while (*p != nullptr && messages.size() < static_cast(limit)) { - from_message_id = (*p)->message_id_; + from_message_id = (*p)->get_message_id(); messages.push_back(get_message_object(dialog_id, get_message(d, from_message_id), "get_dialog_history")); from_the_end = false; --p; @@ -23164,7 +23166,7 @@ void MessagesManager::preload_newer_messages(const Dialog *d, MessageId max_mess while (*p != nullptr && limit-- > 0) { ++p; if (*p) { - max_message_id = (*p)->message_id_; + max_message_id = (*p)->get_message_id(); } } if (limit > 0 && (d->last_message_id == MessageId() || max_message_id < d->last_message_id)) { @@ -23190,7 +23192,7 @@ void MessagesManager::preload_older_messages(const Dialog *d, MessageId min_mess auto p = d->ordered_messages.get_const_iterator(min_message_id); int32 limit = MAX_GET_HISTORY * 3 / 10 + 1; while (*p != nullptr && limit-- > 0) { - min_message_id = (*p)->message_id_; + min_message_id = (*p)->get_message_id(); --p; } if (limit > 0) { @@ -34933,18 +34935,18 @@ MessagesManager::Message *MessagesManager::add_message_to_dialog(Dialog *d, uniq ++it; auto next_message = *it; if (next_message != nullptr) { - if (next_message->message_id_.is_server() && + if (next_message->get_message_id().is_server() && !(td_->auth_manager_->is_bot() && Slice(source) == Slice("GetRepliedChannelMessageQuery"))) { LOG(ERROR) << "Can't attach " << m->message_id << " of type " << m->content->get_type() << " from " << source << " from " << (m->from_database ? "database" : "server") << " before " - << next_message->message_id_ << " and after " << previous_message->message_id_ << " in " + << next_message->get_message_id() << " and after " << previous_message->get_message_id() << " in " << dialog_id; } next_message->have_previous_ = false; previous_message->have_next_ = false; } else { - LOG(ERROR) << "Have_next is true, but there is no next message after " << previous_message->message_id_ + LOG(ERROR) << "Have_next is true, but there is no next message after " << previous_message->get_message_id() << " from " << source << " in " << dialog_id; } } else if (m->message_id.is_server() && d->last_message_id.is_valid() && m->message_id > d->last_message_id) { @@ -39952,11 +39954,11 @@ void MessagesManager::suffix_load_update_first_message_id(const Dialog *d, Suffi } auto it = d->ordered_messages.get_const_iterator(queries->suffix_load_first_message_id_); CHECK(*it != nullptr); - CHECK((*it)->message_id_ == queries->suffix_load_first_message_id_); + CHECK((*it)->get_message_id() == queries->suffix_load_first_message_id_); while ((*it)->have_previous_) { --it; } - queries->suffix_load_first_message_id_ = (*it)->message_id_; + queries->suffix_load_first_message_id_ = (*it)->get_message_id(); } void MessagesManager::suffix_load_query_ready(DialogId dialog_id) { diff --git a/td/telegram/OrderedMessage.h b/td/telegram/OrderedMessage.h index 2caef8f80..5b3865e73 100644 --- a/td/telegram/OrderedMessage.h +++ b/td/telegram/OrderedMessage.h @@ -16,7 +16,9 @@ namespace td { class OrderedMessage { public: - MessageId message_id_; + MessageId get_message_id() const { + return message_id_; + } bool have_previous_ = false; bool have_next_ = false; @@ -24,6 +26,8 @@ class OrderedMessage { private: int32 random_y_ = 0; + MessageId message_id_; + unique_ptr left_; unique_ptr right_;