Add static AuthDataShared::get_auth_key_for_dc().

This commit is contained in:
levlam 2023-10-23 15:26:52 +03:00
parent 4786d1a931
commit d5f7423b52
2 changed files with 20 additions and 9 deletions

View File

@ -34,8 +34,8 @@ class AuthDataSharedImpl final : public AuthDataShared {
return public_rsa_key_; return public_rsa_key_;
} }
mtproto::AuthKey get_auth_key() final { static mtproto::AuthKey get_auth_key_for_dc(DcId dc_id) {
string dc_key = G()->td_db()->get_binlog_pmc()->get(auth_key_key()); string dc_key = G()->td_db()->get_binlog_pmc()->get(get_auth_key_binlog_key(dc_id));
mtproto::AuthKey res; mtproto::AuthKey res;
if (!dc_key.empty()) { if (!dc_key.empty()) {
@ -44,8 +44,12 @@ class AuthDataSharedImpl final : public AuthDataShared {
return res; return res;
} }
mtproto::AuthKey get_auth_key() final {
return get_auth_key_for_dc(dc_id_);
}
void set_auth_key(const mtproto::AuthKey &auth_key) final { void set_auth_key(const mtproto::AuthKey &auth_key) final {
G()->td_db()->get_binlog_pmc()->set(auth_key_key(), serialize(auth_key)); G()->td_db()->get_binlog_pmc()->set(get_auth_key_binlog_key(dc_id_), serialize(auth_key));
log_auth_key(auth_key); log_auth_key(auth_key);
notify(); notify();
@ -69,11 +73,11 @@ class AuthDataSharedImpl final : public AuthDataShared {
} }
void set_future_salts(const std::vector<mtproto::ServerSalt> &future_salts) final { void set_future_salts(const std::vector<mtproto::ServerSalt> &future_salts) final {
G()->td_db()->get_binlog_pmc()->set(future_salts_key(), serialize(future_salts)); G()->td_db()->get_binlog_pmc()->set(get_future_salts_binlog_key(dc_id_), serialize(future_salts));
} }
std::vector<mtproto::ServerSalt> get_future_salts() final { std::vector<mtproto::ServerSalt> get_future_salts() final {
string future_salts = G()->td_db()->get_binlog_pmc()->get(future_salts_key()); string future_salts = G()->td_db()->get_binlog_pmc()->get(get_future_salts_binlog_key(dc_id_));
std::vector<mtproto::ServerSalt> res; std::vector<mtproto::ServerSalt> res;
if (!future_salts.empty()) { if (!future_salts.empty()) {
unserialize(res, future_salts).ensure(); unserialize(res, future_salts).ensure();
@ -88,11 +92,12 @@ class AuthDataSharedImpl final : public AuthDataShared {
std::shared_ptr<Guard> guard_; std::shared_ptr<Guard> guard_;
RwMutex rw_mutex_; RwMutex rw_mutex_;
string auth_key_key() const { static string get_auth_key_binlog_key(DcId dc_id) {
return PSTRING() << "auth" << dc_id_.get_raw_id(); return PSTRING() << "auth" << dc_id.get_raw_id();
} }
string future_salts_key() const {
return PSTRING() << "salt" << dc_id_.get_raw_id(); static string get_future_salts_binlog_key(DcId dc_id) {
return PSTRING() << "salt" << dc_id.get_raw_id();
} }
void notify() { void notify() {
@ -114,6 +119,10 @@ class AuthDataSharedImpl final : public AuthDataShared {
} }
}; };
mtproto::AuthKey AuthDataShared::get_auth_key_for_dc(DcId dc_id) {
return AuthDataSharedImpl::get_auth_key_for_dc(dc_id);
}
std::shared_ptr<AuthDataShared> AuthDataShared::create(DcId dc_id, std::shared_ptr<PublicRsaKeyShared> public_rsa_key, std::shared_ptr<AuthDataShared> AuthDataShared::create(DcId dc_id, std::shared_ptr<PublicRsaKeyShared> public_rsa_key,
std::shared_ptr<Guard> guard) { std::shared_ptr<Guard> guard) {
return std::make_shared<AuthDataSharedImpl>(dc_id, std::move(public_rsa_key), std::move(guard)); return std::make_shared<AuthDataSharedImpl>(dc_id, std::move(public_rsa_key), std::move(guard));

View File

@ -43,6 +43,8 @@ class AuthDataShared {
virtual void set_future_salts(const std::vector<mtproto::ServerSalt> &future_salts) = 0; virtual void set_future_salts(const std::vector<mtproto::ServerSalt> &future_salts) = 0;
virtual std::vector<mtproto::ServerSalt> get_future_salts() = 0; virtual std::vector<mtproto::ServerSalt> get_future_salts() = 0;
static mtproto::AuthKey get_auth_key_for_dc(DcId dc_id);
static std::shared_ptr<AuthDataShared> create(DcId dc_id, std::shared_ptr<PublicRsaKeyShared> public_rsa_key, static std::shared_ptr<AuthDataShared> create(DcId dc_id, std::shared_ptr<PublicRsaKeyShared> public_rsa_key,
std::shared_ptr<Guard> guard); std::shared_ptr<Guard> guard);
}; };