From e47f1d69472dadf28997b30019aa28d1eb1e41b6 Mon Sep 17 00:00:00 2001 From: levlam Date: Sun, 21 Apr 2019 21:17:11 +0300 Subject: [PATCH] Add ignore_background_updates option. GitOrigin-RevId: cefa2fd658d1e0426bd319db2f033b0506e0f8de --- td/telegram/Global.cpp | 5 +++++ td/telegram/Global.h | 2 ++ td/telegram/MessagesManager.cpp | 8 +++++++- td/telegram/Td.cpp | 3 +++ td/telegram/UpdatesManager.cpp | 16 +++++++++++++--- 5 files changed, 30 insertions(+), 4 deletions(-) diff --git a/td/telegram/Global.cpp b/td/telegram/Global.cpp index 348073cd..0b7ae6cd 100644 --- a/td/telegram/Global.cpp +++ b/td/telegram/Global.cpp @@ -115,6 +115,11 @@ DcId Global::get_webfile_dc_id() const { return DcId::internal(dc_id); } +bool Global::ignore_backgrond_updates() const { + return !parameters_.use_file_db && !parameters_.use_secret_chats && + shared_config_->get_option_boolean("ignore_background_updates"); +} + void Global::set_net_query_dispatcher(unique_ptr net_query_dispatcher) { net_query_dispatcher_ = std::move(net_query_dispatcher); } diff --git a/td/telegram/Global.h b/td/telegram/Global.h index 6a6dbab1..537dd549 100644 --- a/td/telegram/Global.h +++ b/td/telegram/Global.h @@ -88,6 +88,8 @@ class Global : public ActorContext { return parameters_.use_test_dc; } + bool ignore_backgrond_updates() const; + NetQueryCreator &net_query_creator() { return net_query_creator_.get(); } diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index ed7d2804..f1c4190d 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -24597,6 +24597,10 @@ string MessagesManager::get_channel_pts_key(DialogId dialog_id) { } int32 MessagesManager::load_channel_pts(DialogId dialog_id) const { + if (G()->ignore_backgrond_updates()) { + G()->td_db()->get_binlog_pmc()->erase(get_channel_pts_key(dialog_id)); // just in case + return 0; + } auto pts = to_integer(G()->td_db()->get_binlog_pmc()->get(get_channel_pts_key(dialog_id))); LOG(INFO) << "Load " << dialog_id << " pts = " << pts; return pts; @@ -24628,7 +24632,9 @@ void MessagesManager::set_channel_pts(Dialog *d, int32 new_pts, const char *sour } d->pts = new_pts; - G()->td_db()->get_binlog_pmc()->set(get_channel_pts_key(d->dialog_id), to_string(new_pts)); + if (!G()->ignore_backgrond_updates()) { + G()->td_db()->get_binlog_pmc()->set(get_channel_pts_key(d->dialog_id), to_string(new_pts)); + } } else if (new_pts < d->pts) { LOG(ERROR) << "Receive wrong pts " << new_pts << " in " << d->dialog_id << " . Current pts is " << d->pts; } diff --git a/td/telegram/Td.cpp b/td/telegram/Td.cpp index 2433091f..1f2d432b 100644 --- a/td/telegram/Td.cpp +++ b/td/telegram/Td.cpp @@ -6537,6 +6537,9 @@ void Td::on_request(uint64 id, td_api::setOption &request) { if (set_boolean_option("ignore_inline_thumbnails")) { return; } + if (set_boolean_option("ignore_background_updates")) { + return; + } if (set_boolean_option("is_emulator")) { return; } diff --git a/td/telegram/UpdatesManager.cpp b/td/telegram/UpdatesManager.cpp index 29ce0a10..27b8de0b 100644 --- a/td/telegram/UpdatesManager.cpp +++ b/td/telegram/UpdatesManager.cpp @@ -243,7 +243,7 @@ void UpdatesManager::on_pts_ack(PtsManager::PtsId ack_token) { void UpdatesManager::save_pts(int32 pts) { if (pts == std::numeric_limits::max()) { G()->td_db()->get_binlog_pmc()->erase("updates.pts"); - } else { + } else if (!G()->ignore_backgrond_updates()) { G()->td_db()->get_binlog_pmc()->set("updates.pts", to_string(pts)); } } @@ -280,7 +280,9 @@ void UpdatesManager::set_qts(int32 qts) { LOG(INFO) << "Update qts to " << qts; qts_ = qts; - G()->td_db()->get_binlog_pmc()->set("updates.qts", to_string(qts)); + if (!G()->ignore_backgrond_updates()) { + G()->td_db()->get_binlog_pmc()->set("updates.qts", to_string(qts)); + } } else if (qts < qts_) { LOG(ERROR) << "Receive wrong qts = " << qts << ". Current qts = " << qts_; } @@ -308,7 +310,9 @@ void UpdatesManager::set_date(int32 date, bool from_update, string date_source) date_ = date; date_source_ = std::move(date_source); - G()->td_db()->get_binlog_pmc()->set("updates.date", to_string(date)); + if (!G()->ignore_backgrond_updates()) { + G()->td_db()->get_binlog_pmc()->set("updates.date", to_string(date)); + } } else if (date < date_) { if (from_update) { date++; @@ -867,6 +871,12 @@ void UpdatesManager::init_state() { } auto pmc = G()->td_db()->get_binlog_pmc(); + if (G()->ignore_backgrond_updates()) { + // just in case + pmc->erase("updates.pts"); + pmc->erase("updates.qts"); + pmc->erase("updates.date"); + } string pts_str = pmc->get("updates.pts"); if (pts_str.empty()) { if (!running_get_difference_) {