Fix process_config.

GitOrigin-RevId: ea657dfc621fdf13a1641377a2bef6ddd396172a
This commit is contained in:
levlam 2018-03-08 18:01:45 +03:00
parent 34f6fd8942
commit c2dbb601cf
7 changed files with 40 additions and 12 deletions

View File

@ -671,7 +671,9 @@ void ConfigManager::process_config(tl_object_ptr<telegram_api::config> config) {
shared_config.set_option_integer("basic_group_size_max", config->chat_size_max_); shared_config.set_option_integer("basic_group_size_max", config->chat_size_max_);
shared_config.set_option_integer("supergroup_size_max", config->megagroup_size_max_); shared_config.set_option_integer("supergroup_size_max", config->megagroup_size_max_);
shared_config.set_option_integer("pinned_chat_count_max", config->pinned_dialogs_count_max_); shared_config.set_option_integer("pinned_chat_count_max", config->pinned_dialogs_count_max_);
if (is_from_main_dc || !shared_config.have_option("t_me_url")) {
shared_config.set_option_string("t_me_url", config->me_url_prefix_); shared_config.set_option_string("t_me_url", config->me_url_prefix_);
}
if (is_from_main_dc) { if (is_from_main_dc) {
if ((config->flags_ & telegram_api::config::TMP_SESSIONS_MASK) != 0) { if ((config->flags_ & telegram_api::config::TMP_SESSIONS_MASK) != 0) {
G()->shared_config().set_option_integer("session_count", config->tmp_sessions_); G()->shared_config().set_option_integer("session_count", config->tmp_sessions_);
@ -680,6 +682,7 @@ void ConfigManager::process_config(tl_object_ptr<telegram_api::config> config) {
} }
} }
if (is_from_main_dc) {
shared_config.set_option_integer("edit_time_limit", config->edit_time_limit_); shared_config.set_option_integer("edit_time_limit", config->edit_time_limit_);
shared_config.set_option_boolean("revoke_pm_inbox", shared_config.set_option_boolean("revoke_pm_inbox",
(config->flags_ & telegram_api::config::REVOKE_PM_INBOX_MASK) != 0); (config->flags_ & telegram_api::config::REVOKE_PM_INBOX_MASK) != 0);
@ -688,7 +691,6 @@ void ConfigManager::process_config(tl_object_ptr<telegram_api::config> config) {
shared_config.set_option_integer("rating_e_decay", config->rating_e_decay_); shared_config.set_option_integer("rating_e_decay", config->rating_e_decay_);
if (is_from_main_dc) {
shared_config.set_option_boolean("calls_enabled", config->phonecalls_enabled_); shared_config.set_option_boolean("calls_enabled", config->phonecalls_enabled_);
} }
shared_config.set_option_integer("call_ring_timeout_ms", config->call_ring_timeout_ms_); shared_config.set_option_integer("call_ring_timeout_ms", config->call_ring_timeout_ms_);

View File

@ -42,6 +42,10 @@ void ConfigShared::set_option_string(Slice name, Slice value) {
} }
} }
bool ConfigShared::have_option(Slice name) const {
return config_pmc_->isset(name.str());
}
string ConfigShared::get_option(Slice name) const { string ConfigShared::get_option(Slice name) const {
return config_pmc_->get(name.str()); return config_pmc_->get(name.str());
} }

View File

@ -34,6 +34,7 @@ class ConfigShared {
void set_option_integer(Slice name, int32 value); void set_option_integer(Slice name, int32 value);
void set_option_string(Slice name, Slice value); void set_option_string(Slice name, Slice value);
bool have_option(Slice name) const;
string get_option(Slice name) const; string get_option(Slice name) const;
std::unordered_map<string, string> get_options(Slice prefix) const; std::unordered_map<string, string> get_options(Slice prefix) const;
std::unordered_map<string, string> get_options() const; std::unordered_map<string, string> get_options() const;

View File

@ -162,6 +162,11 @@ class BinlogKeyValue : public KeyValueSyncInterface {
binlog_->add_raw_event(seq_no, std::move(event)); binlog_->add_raw_event(seq_no, std::move(event));
} }
bool isset(const string &key) override {
auto lock = rw_mutex_.lock_read().move_as_ok();
return map_.count(key) > 0;
}
string get(const string &key) override { string get(const string &key) override {
auto lock = rw_mutex_.lock_read().move_as_ok(); auto lock = rw_mutex_.lock_read().move_as_ok();
auto it = map_.find(key); auto it = map_.find(key);

View File

@ -9,6 +9,7 @@
#include "td/utils/common.h" #include "td/utils/common.h"
namespace td { namespace td {
class KeyValueSyncInterface { class KeyValueSyncInterface {
public: public:
// SeqNo is used to restore total order on all write queries. // SeqNo is used to restore total order on all write queries.
@ -21,8 +22,14 @@ class KeyValueSyncInterface {
KeyValueSyncInterface(KeyValueSyncInterface &&) = default; KeyValueSyncInterface(KeyValueSyncInterface &&) = default;
KeyValueSyncInterface &operator=(KeyValueSyncInterface &&) = default; KeyValueSyncInterface &operator=(KeyValueSyncInterface &&) = default;
virtual ~KeyValueSyncInterface() = default; virtual ~KeyValueSyncInterface() = default;
virtual SeqNo set(string key, string value) = 0; virtual SeqNo set(string key, string value) = 0;
virtual SeqNo erase(const string &key) = 0;
virtual bool isset(const string &key) = 0;
virtual string get(const string &key) = 0; virtual string get(const string &key) = 0;
virtual SeqNo erase(const string &key) = 0;
}; };
} // namespace td } // namespace td

View File

@ -5,6 +5,8 @@
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// //
#pragma once #pragma once
#include "td/db/binlog/ConcurrentBinlog.h"
#include "td/db/BinlogKeyValue.h" #include "td/db/BinlogKeyValue.h"
#include "td/db/SqliteKeyValue.h" #include "td/db/SqliteKeyValue.h"
@ -13,7 +15,7 @@
#include <memory> #include <memory>
namespace td { namespace td {
class SqliteKeyValue;
using BinlogPmcBase = BinlogKeyValue<ConcurrentBinlog>; using BinlogPmcBase = BinlogKeyValue<ConcurrentBinlog>;
using BinlogPmc = std::shared_ptr<BinlogPmcBase>; using BinlogPmc = std::shared_ptr<BinlogPmcBase>;
using BinlogPmcPtr = BinlogPmcBase *; using BinlogPmcPtr = BinlogPmcBase *;
@ -21,4 +23,5 @@ using BinlogPmcPtr = BinlogPmcBase *;
using BigPmcBase = SqliteKeyValue; using BigPmcBase = SqliteKeyValue;
using BigPmc = std::unique_ptr<BigPmcBase>; using BigPmc = std::unique_ptr<BigPmcBase>;
using BigPmcPtr = BigPmcBase *; using BigPmcPtr = BigPmcBase *;
}; // namespace td }; // namespace td

View File

@ -490,16 +490,22 @@ class OldFakeKeyValue : public KeyValueSyncInterface {
kv_[key] = value; kv_[key] = value;
return 0; return 0;
} }
SeqNo erase(const string &key) override { SeqNo erase(const string &key) override {
kv_.erase(key); kv_.erase(key);
return 0; return 0;
} }
bool isset(const string &key) override {
return kv_.count(key) > 0;
}
string get(const string &key) override { string get(const string &key) override {
auto it = kv_.find(key); auto it = kv_.find(key);
if (it != kv_.end()) { if (it != kv_.end()) {
return it->second; return it->second;
} }
return ""; return string();
} }
private: private: