diff options
Diffstat (limited to 'libs/tdlib/td/td/telegram/net/SessionMultiProxy.cpp')
-rw-r--r-- | libs/tdlib/td/td/telegram/net/SessionMultiProxy.cpp | 111 |
1 files changed, 0 insertions, 111 deletions
diff --git a/libs/tdlib/td/td/telegram/net/SessionMultiProxy.cpp b/libs/tdlib/td/td/telegram/net/SessionMultiProxy.cpp deleted file mode 100644 index 7fe27dd81e..0000000000 --- a/libs/tdlib/td/td/telegram/net/SessionMultiProxy.cpp +++ /dev/null @@ -1,111 +0,0 @@ -// -// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2018 -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// -#include "td/telegram/net/SessionMultiProxy.h" - -#include "td/telegram/net/SessionProxy.h" - -#include "td/utils/format.h" -#include "td/utils/logging.h" -#include "td/utils/Slice.h" - -namespace td { - -SessionMultiProxy::SessionMultiProxy() = default; -SessionMultiProxy::~SessionMultiProxy() = default; - -SessionMultiProxy::SessionMultiProxy(int32 session_count, std::shared_ptr<AuthDataShared> shared_auth_data, - bool is_main, bool use_pfs, bool allow_media_only, bool is_media, bool is_cdn) - : session_count_(session_count) - , auth_data_(std::move(shared_auth_data)) - , is_main_(is_main) - , use_pfs_(use_pfs) - , allow_media_only_(allow_media_only) - , is_media_(is_media) - , is_cdn_(is_cdn) { - if (allow_media_only_) { - CHECK(is_media_); - } -} - -void SessionMultiProxy::send(NetQueryPtr query) { - size_t pos = 0; - // TODO temporary hack with total_timeout_limit - if (query->auth_flag() == NetQuery::AuthFlag::On && query->total_timeout_limit > 50) { - if (query->session_rand()) { - pos = query->session_rand() % sessions_.size(); - } else { - pos = pos_++ % sessions_.size(); - } - } - query->debug(PSTRING() << get_name() << ": send to proxy #" << pos); - send_closure(sessions_[pos], &SessionProxy::send, std::move(query)); -} - -void SessionMultiProxy::update_main_flag(bool is_main) { - LOG(INFO) << "Update " << get_name() << " is_main to " << is_main; - is_main_ = is_main; - for (auto &session : sessions_) { - send_closure(session, &SessionProxy::update_main_flag, is_main); - } -} -void SessionMultiProxy::update_session_count(int32 session_count) { - update_options(session_count, use_pfs_); -} -void SessionMultiProxy::update_use_pfs(bool use_pfs) { - update_options(session_count_, use_pfs); -} - -void SessionMultiProxy::update_options(int32 session_count, bool use_pfs) { - bool changed = false; - - if (session_count != session_count_) { - session_count_ = session_count; - if (session_count_ <= 0) { - session_count_ = 1; - } - if (session_count_ > 100) { - session_count_ = 100; - } - LOG(INFO) << "Update " << get_name() << " session_count to " << session_count_; - changed = true; - } - - if (use_pfs != use_pfs_) { - bool old_pfs_flag = get_pfs_flag(); - use_pfs_ = use_pfs; - if (old_pfs_flag != get_pfs_flag()) { - LOG(INFO) << "Update " << get_name() << " use_pfs to " << use_pfs_; - changed = true; - } - } - if (changed) { - init(); - } -} - -void SessionMultiProxy::start_up() { - init(); -} - -bool SessionMultiProxy::get_pfs_flag() const { - return (!allow_media_only_ && use_pfs_); // pfs is not supported in media only DCs -} - -void SessionMultiProxy::init() { - sessions_.clear(); - if (is_main_) { - LOG(WARNING) << tag("session_count", session_count_); - } - for (int32 i = 0; i < session_count_; i++) { - string name = PSTRING() << "Session" << get_name().substr(Slice("SessionMulti").size()) - << format::cond(session_count_ > 1, format::concat("#", i)); - sessions_.push_back(create_actor<SessionProxy>(name, auth_data_, is_main_, allow_media_only_, is_media_, - get_pfs_flag(), is_main_ && i != 0, is_cdn_)); - } -} - -} // namespace td |