Make on_get_updates_state private.

This commit is contained in:
levlam 2021-01-16 02:55:47 +03:00
parent 7c0af14d09
commit 7a94cac200
2 changed files with 34 additions and 21 deletions

View File

@ -82,10 +82,14 @@ class OnUpdate {
};
class GetUpdatesStateQuery : public Td::ResultHandler {
Promise<tl_object_ptr<telegram_api::updates_state>> promise_;
public:
explicit GetUpdatesStateQuery(Promise<tl_object_ptr<telegram_api::updates_state>> &&promise)
: promise_(std::move(promise)) {
}
void send() {
// TODO this call must be first after client is logged in, there must be no API calls before
// it succeeds
send_query(G()->net_query_creator().create(telegram_api::updates_getState()));
}
@ -95,18 +99,11 @@ class GetUpdatesStateQuery : public Td::ResultHandler {
return on_error(id, result_ptr.move_as_error());
}
auto state = result_ptr.move_as_ok();
CHECK(state->get_id() == telegram_api::updates_state::ID);
td->updates_manager_->on_get_updates_state(std::move(state), "GetUpdatesStateQuery");
promise_.set_value(result_ptr.move_as_ok());
}
void on_error(uint64 id, Status status) override {
if (status.code() != 401) {
LOG(ERROR) << "Receive updates.getState error: " << status;
}
status.ignore();
td->updates_manager_->on_get_updates_state(nullptr, "GetUpdatesStateQuery");
promise_.set_error(std::move(status));
}
};
@ -856,6 +853,15 @@ void UpdatesManager::on_get_updates(tl_object_ptr<telegram_api::Updates> &&updat
}
}
void UpdatesManager::on_failed_get_updates_state(Status &&error) {
if (error.code() != 401) {
LOG(ERROR) << "Receive updates.getState error: " << error;
}
running_get_difference_ = false;
schedule_get_difference("on_failed_get_updates_state");
}
void UpdatesManager::on_failed_get_difference(Status &&error) {
if (error.code() != 401) {
LOG(ERROR) << "Receive updates.getDifference error: " << error;
@ -883,11 +889,8 @@ void UpdatesManager::schedule_get_difference(const char *source) {
}
void UpdatesManager::on_get_updates_state(tl_object_ptr<telegram_api::updates_state> &&state, const char *source) {
if (state == nullptr) {
running_get_difference_ = false;
schedule_get_difference("on_get_updates_state");
return;
}
CHECK(state != nullptr);
VLOG(get_difference) << "Receive " << oneline(to_string(state)) << " from " << source;
// TODO use state->unread_count;
@ -1108,7 +1111,15 @@ void UpdatesManager::init_state() {
before_get_difference(true);
td_->create_handler<GetUpdatesStateQuery>()->send();
auto promise = PromiseCreator::lambda([](Result<tl_object_ptr<telegram_api::updates_state>> result) {
if (result.is_ok()) {
send_closure(G()->updates_manager(), &UpdatesManager::on_get_updates_state, result.move_as_ok(),
"GetUpdatesStateQuery");
} else {
send_closure(G()->updates_manager(), &UpdatesManager::on_failed_get_updates_state, result.move_as_error());
}
});
td_->create_handler<GetUpdatesStateQuery>(std::move(promise))->send();
}
return;
}

View File

@ -91,8 +91,6 @@ class UpdatesManager : public Actor {
void on_get_updates(tl_object_ptr<telegram_api::Updates> &&updates_ptr, Promise<Unit> &&promise);
void on_get_updates_state(tl_object_ptr<telegram_api::updates_state> &&state, const char *source);
void add_pending_pts_update(tl_object_ptr<telegram_api::Update> &&update, int32 new_pts, int32 pts_count,
Promise<Unit> &&promise, const char *source);
@ -113,8 +111,6 @@ class UpdatesManager : public Actor {
void schedule_get_difference(const char *source);
void init_state();
void ping_server();
void on_server_pong(tl_object_ptr<telegram_api::updates_state> &&state);
@ -225,6 +221,10 @@ class UpdatesManager : public Actor {
int32 get_short_update_date() const;
void init_state();
void on_get_updates_state(tl_object_ptr<telegram_api::updates_state> &&state, const char *source);
void on_get_difference(tl_object_ptr<telegram_api::updates_Difference> &&difference_ptr);
void process_get_difference_updates(vector<tl_object_ptr<telegram_api::Message>> &&new_messages,
@ -278,6 +278,8 @@ class UpdatesManager : public Actor {
void run_get_difference(bool is_recursive, const char *source);
void on_failed_get_updates_state(Status &&error);
void on_failed_get_difference(Status &&error);
void before_get_difference(bool is_initial);