Use online status in ConfigRecoverer.

GitOrigin-RevId: ffc119b35bd2a42a236de90e3393c325d36478a9
This commit is contained in:
levlam 2018-08-05 00:35:50 +03:00
parent 72d2235f6e
commit debb0cf186

View File

@ -372,7 +372,19 @@ class ConfigRecoverer : public Actor {
loop(); loop();
} }
void on_online(bool is_online) { void on_online(bool is_online) {
if (is_online_ == is_online) {
return;
}
is_online_ = is_online; is_online_ = is_online;
if (is_online) {
if (simple_config_.dc_options.empty()) {
simple_config_expire_at_ = 0;
}
if (full_config_ == nullptr) {
full_config_expire_at_ = 0;
}
}
loop(); loop();
} }
void on_connecting(bool is_connecting) { void on_connecting(bool is_connecting) {
@ -462,11 +474,15 @@ class ConfigRecoverer : public Actor {
} }
double get_config_expire_time() const { double get_config_expire_time() const {
return Time::now() + (expect_blocking() ? Random::fast(2 * 60, 3 * 60) : Random::fast(20 * 60, 30 * 60)); auto offline_delay = is_online_ ? 0 : 5 * 60;
auto expire_time = expect_blocking() ? Random::fast(2 * 60, 3 * 60) : Random::fast(20 * 60, 30 * 60);
return Time::now() + offline_delay + expire_time;
} }
double get_failed_config_expire_time() const { double get_failed_config_expire_time() const {
return Time::now() + (expect_blocking() ? Random::fast(5, 7) : Random::fast(15, 30)); auto offline_delay = is_online_ ? 0 : 5 * 60;
auto expire_time = expect_blocking() ? Random::fast(5, 7) : Random::fast(15, 30);
return Time::now() + offline_delay + expire_time;
} }
bool is_connecting_{false}; bool is_connecting_{false};
@ -479,7 +495,7 @@ class ConfigRecoverer : public Actor {
uint32 network_generation_{0}; uint32 network_generation_{0};
DcOptions simple_config_; DcOptions simple_config_;
double simple_config_expire_at_{-1}; double simple_config_expire_at_{0};
double simple_config_at_{0}; double simple_config_at_{0};
ActorOwn<> simple_config_query_; ActorOwn<> simple_config_query_;