Add VLOG get_difference.
GitOrigin-RevId: afd6834f83c455d613949b59f65a3ef0ffed8cf4
This commit is contained in:
parent
ca4c1acc90
commit
6fc90bb699
@ -3450,7 +3450,7 @@ setLogVerbosityLevel new_verbosity_level:int32 = Ok;
|
|||||||
//@description Returns current verbosity level of the internal logging of TDLib. This is an offline method. Can be called before authorization. Can be called synchronously
|
//@description Returns current verbosity level of the internal logging of TDLib. This is an offline method. Can be called before authorization. Can be called synchronously
|
||||||
getLogVerbosityLevel = LogVerbosityLevel;
|
getLogVerbosityLevel = LogVerbosityLevel;
|
||||||
|
|
||||||
//@description Returns list of available TDLib internal log tags. Currently returns ["td_init", "update_file", "connections", "binlog", "proxy", "net_query", "td_requests", "dc", "files", "mtproto", "raw_mtproto", "fd", "actor", "buffer", "sqlite", "notifications"]
|
//@description Returns list of available TDLib internal log tags, for example, ["actor", "binlog", "connections", "notifications", "proxy"]
|
||||||
getLogTags = LogTags;
|
getLogTags = LogTags;
|
||||||
|
|
||||||
//@description Sets the verbosity level for a specified TDLib internal log tag. This is an offline method. Can be called before authorization. Can be called synchronously
|
//@description Sets the verbosity level for a specified TDLib internal log tag. This is an offline method. Can be called before authorization. Can be called synchronously
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
#include "td/telegram/net/ConnectionCreator.h"
|
#include "td/telegram/net/ConnectionCreator.h"
|
||||||
#include "td/telegram/NotificationManager.h"
|
#include "td/telegram/NotificationManager.h"
|
||||||
#include "td/telegram/Td.h"
|
#include "td/telegram/Td.h"
|
||||||
|
#include "td/telegram/UpdatesManager.h"
|
||||||
|
|
||||||
#include "tddb/td/db/binlog/BinlogEvent.h"
|
#include "tddb/td/db/binlog/BinlogEvent.h"
|
||||||
|
|
||||||
@ -31,11 +32,12 @@ static NullLog null_log;
|
|||||||
|
|
||||||
#define ADD_TAG(tag) \
|
#define ADD_TAG(tag) \
|
||||||
{ #tag, &VERBOSITY_NAME(tag) }
|
{ #tag, &VERBOSITY_NAME(tag) }
|
||||||
static const std::unordered_map<Slice, int *, SliceHash> log_tags{
|
static const std::map<Slice, int *> log_tags{
|
||||||
ADD_TAG(td_init), ADD_TAG(update_file), ADD_TAG(connections), ADD_TAG(binlog),
|
ADD_TAG(td_init), ADD_TAG(update_file), ADD_TAG(connections), ADD_TAG(binlog),
|
||||||
ADD_TAG(proxy), ADD_TAG(net_query), ADD_TAG(td_requests), ADD_TAG(dc),
|
ADD_TAG(proxy), ADD_TAG(net_query), ADD_TAG(td_requests), ADD_TAG(dc),
|
||||||
ADD_TAG(files), ADD_TAG(mtproto), ADD_TAG(raw_mtproto), ADD_TAG(fd),
|
ADD_TAG(files), ADD_TAG(mtproto), ADD_TAG(raw_mtproto), ADD_TAG(fd),
|
||||||
ADD_TAG(actor), ADD_TAG(buffer), ADD_TAG(sqlite), ADD_TAG(notifications)};
|
ADD_TAG(actor), ADD_TAG(buffer), ADD_TAG(sqlite), ADD_TAG(notifications),
|
||||||
|
ADD_TAG(get_difference)};
|
||||||
#undef ADD_TAG
|
#undef ADD_TAG
|
||||||
|
|
||||||
Status Logging::set_current_stream(td_api::object_ptr<td_api::LogStream> stream) {
|
Status Logging::set_current_stream(td_api::object_ptr<td_api::LogStream> stream) {
|
||||||
|
@ -47,6 +47,8 @@
|
|||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
|
|
||||||
|
int VERBOSITY_NAME(get_difference) = VERBOSITY_NAME(INFO);
|
||||||
|
|
||||||
class OnUpdate {
|
class OnUpdate {
|
||||||
UpdatesManager *manager_;
|
UpdatesManager *manager_;
|
||||||
tl_object_ptr<telegram_api::Update> &update_;
|
tl_object_ptr<telegram_api::Update> &update_;
|
||||||
@ -126,7 +128,7 @@ class GetDifferenceQuery : public Td::ResultHandler {
|
|||||||
pts = 0;
|
pts = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG(INFO) << tag("pts", pts) << tag("qts", qts) << tag("date", date);
|
VLOG(get_difference) << tag("pts", pts) << tag("qts", qts) << tag("date", date);
|
||||||
|
|
||||||
send_query(
|
send_query(
|
||||||
G()->net_query_creator().create(create_storer(telegram_api::updates_getDifference(0, pts, 0, date, qts))));
|
G()->net_query_creator().create(create_storer(telegram_api::updates_getDifference(0, pts, 0, date, qts))));
|
||||||
@ -238,12 +240,12 @@ void UpdatesManager::get_difference(const char *source) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (running_get_difference_) {
|
if (running_get_difference_) {
|
||||||
LOG(INFO) << "Skip running getDifference from " << source << " because it is already running";
|
VLOG(get_difference) << "Skip running getDifference from " << source << " because it is already running";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
running_get_difference_ = true;
|
running_get_difference_ = true;
|
||||||
|
|
||||||
LOG(INFO) << "-----BEGIN GET DIFFERENCE----- from " << source;
|
VLOG(get_difference) << "-----BEGIN GET DIFFERENCE----- from " << source;
|
||||||
|
|
||||||
before_get_difference();
|
before_get_difference();
|
||||||
|
|
||||||
@ -730,7 +732,7 @@ void UpdatesManager::on_failed_get_difference() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void UpdatesManager::schedule_get_difference(const char *source) {
|
void UpdatesManager::schedule_get_difference(const char *source) {
|
||||||
LOG(INFO) << "Schedule getDifference from " << source;
|
VLOG(get_difference) << "Schedule getDifference from " << source;
|
||||||
if (!retry_timeout_.has_timeout()) {
|
if (!retry_timeout_.has_timeout()) {
|
||||||
retry_timeout_.set_callback(std::move(fill_get_difference_gap));
|
retry_timeout_.set_callback(std::move(fill_get_difference_gap));
|
||||||
retry_timeout_.set_callback_data(static_cast<void *>(td_));
|
retry_timeout_.set_callback_data(static_cast<void *>(td_));
|
||||||
@ -748,7 +750,7 @@ void UpdatesManager::on_get_updates_state(tl_object_ptr<telegram_api::updates_st
|
|||||||
on_failed_get_difference();
|
on_failed_get_difference();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
LOG(INFO) << "Receive " << oneline(to_string(state)) << " from " << source;
|
VLOG(get_difference) << "Receive " << oneline(to_string(state)) << " from " << source;
|
||||||
// TODO use state->unread_count;
|
// TODO use state->unread_count;
|
||||||
|
|
||||||
if (get_pts() == std::numeric_limits<int32>::max()) {
|
if (get_pts() == std::numeric_limits<int32>::max()) {
|
||||||
@ -929,8 +931,9 @@ void UpdatesManager::process_get_difference_updates(
|
|||||||
vector<tl_object_ptr<telegram_api::Message>> &&new_messages,
|
vector<tl_object_ptr<telegram_api::Message>> &&new_messages,
|
||||||
vector<tl_object_ptr<telegram_api::EncryptedMessage>> &&new_encrypted_messages, int32 qts,
|
vector<tl_object_ptr<telegram_api::EncryptedMessage>> &&new_encrypted_messages, int32 qts,
|
||||||
vector<tl_object_ptr<telegram_api::Update>> &&other_updates) {
|
vector<tl_object_ptr<telegram_api::Update>> &&other_updates) {
|
||||||
LOG(INFO) << "In get difference receive " << new_messages.size() << " messages, " << new_encrypted_messages.size()
|
VLOG(get_difference) << "In get difference receive " << new_messages.size() << " messages, "
|
||||||
<< " encrypted messages and " << other_updates.size() << " other updates";
|
<< new_encrypted_messages.size() << " encrypted messages and " << other_updates.size()
|
||||||
|
<< " other updates";
|
||||||
for (auto &update : other_updates) {
|
for (auto &update : other_updates) {
|
||||||
auto constructor_id = update->get_id();
|
auto constructor_id = update->get_id();
|
||||||
if (constructor_id == telegram_api::updateMessageID::ID) {
|
if (constructor_id == telegram_api::updateMessageID::ID) {
|
||||||
@ -968,7 +971,7 @@ void UpdatesManager::process_get_difference_updates(
|
|||||||
}
|
}
|
||||||
|
|
||||||
void UpdatesManager::on_get_difference(tl_object_ptr<telegram_api::updates_Difference> &&difference_ptr) {
|
void UpdatesManager::on_get_difference(tl_object_ptr<telegram_api::updates_Difference> &&difference_ptr) {
|
||||||
LOG(INFO) << "----- END GET DIFFERENCE-----";
|
VLOG(get_difference) << "----- END GET DIFFERENCE-----";
|
||||||
running_get_difference_ = false;
|
running_get_difference_ = false;
|
||||||
|
|
||||||
if (difference_ptr == nullptr) {
|
if (difference_ptr == nullptr) {
|
||||||
@ -1054,7 +1057,7 @@ void UpdatesManager::after_get_difference() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (postponed_updates_.size()) {
|
if (postponed_updates_.size()) {
|
||||||
LOG(INFO) << "Begin to apply postponed updates";
|
VLOG(get_difference) << "Begin to apply postponed updates";
|
||||||
while (!postponed_updates_.empty()) {
|
while (!postponed_updates_.empty()) {
|
||||||
auto it = postponed_updates_.begin();
|
auto it = postponed_updates_.begin();
|
||||||
auto updates = std::move(it->second.updates);
|
auto updates = std::move(it->second.updates);
|
||||||
@ -1064,11 +1067,11 @@ void UpdatesManager::after_get_difference() {
|
|||||||
postponed_updates_.erase(it);
|
postponed_updates_.erase(it);
|
||||||
on_pending_updates(std::move(updates), updates_seq_begin, updates_seq_end, 0, "postponed updates");
|
on_pending_updates(std::move(updates), updates_seq_begin, updates_seq_end, 0, "postponed updates");
|
||||||
if (running_get_difference_) {
|
if (running_get_difference_) {
|
||||||
LOG(INFO) << "Finish to apply postponed updates because forced to run getDifference";
|
VLOG(get_difference) << "Finish to apply postponed updates because forced to run getDifference";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
LOG(INFO) << "Finish to apply postponed updates";
|
VLOG(get_difference) << "Finish to apply postponed updates";
|
||||||
}
|
}
|
||||||
|
|
||||||
state_ = saved_state;
|
state_ = saved_state;
|
||||||
|
@ -23,6 +23,8 @@
|
|||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
|
|
||||||
|
extern int VERBOSITY_NAME(get_difference);
|
||||||
|
|
||||||
class Td;
|
class Td;
|
||||||
|
|
||||||
class UpdatesManager : public Actor {
|
class UpdatesManager : public Actor {
|
||||||
|
Reference in New Issue
Block a user