summaryrefslogtreecommitdiff
path: root/protocols/Telegram/tdlib/td/td/mtproto/ConnectionManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/Telegram/tdlib/td/td/mtproto/ConnectionManager.cpp')
-rw-r--r--protocols/Telegram/tdlib/td/td/mtproto/ConnectionManager.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/protocols/Telegram/tdlib/td/td/mtproto/ConnectionManager.cpp b/protocols/Telegram/tdlib/td/td/mtproto/ConnectionManager.cpp
new file mode 100644
index 0000000000..2cab7158c5
--- /dev/null
+++ b/protocols/Telegram/tdlib/td/td/mtproto/ConnectionManager.cpp
@@ -0,0 +1,37 @@
+//
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+//
+// 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/mtproto/ConnectionManager.h"
+
+namespace td {
+namespace mtproto {
+
+void ConnectionManager::inc_connect() {
+ auto &cnt = get_link_token() == 1 ? connect_cnt_ : connect_proxy_cnt_;
+ cnt++;
+ if (cnt == 1) {
+ loop();
+ }
+}
+
+void ConnectionManager::dec_connect() {
+ auto &cnt = get_link_token() == 1 ? connect_cnt_ : connect_proxy_cnt_;
+ CHECK(cnt > 0);
+ cnt--;
+ if (cnt == 0) {
+ loop();
+ }
+}
+
+ConnectionManager::ConnectionToken ConnectionManager::connection_impl(ActorId<ConnectionManager> connection_manager,
+ int mode) {
+ auto actor = ActorShared<ConnectionManager>(connection_manager, mode);
+ send_closure(actor, &ConnectionManager::inc_connect);
+ return ConnectionToken(std::move(actor));
+}
+
+} // namespace mtproto
+} // namespace td