Move ClientManager singleton creation to ClientManager::get_manager_singleton.

GitOrigin-RevId: 071b947ff072186c70387cbd00f1c6b1c17d0e6b
This commit is contained in:
levlam 2020-10-11 11:08:56 +03:00
parent 09f906f192
commit 714f037f15
3 changed files with 13 additions and 4 deletions

View File

@ -631,4 +631,10 @@ ClientManager::~ClientManager() = default;
ClientManager::ClientManager(ClientManager &&other) = default;
ClientManager &ClientManager::operator=(ClientManager &&other) = default;
ClientManager *ClientManager::get_manager_singleton() {
static ClientManager client_manager;
static ExitGuard exit_guard;
return &client_manager;
}
} // namespace td

View File

@ -247,6 +247,12 @@ class ClientManager final {
*/
ClientManager &operator=(ClientManager &&other);
/**
* Returns a pointer to a singleton ClientManager instance.
* \return A unique singleton ClientManager instance.
*/
static ClientManager *get_manager_singleton();
private:
friend class Client;
class Impl;

View File

@ -10,7 +10,6 @@
#include "td/telegram/td_api_json.h"
#include "td/utils/common.h"
#include "td/utils/ExitGuard.h"
#include "td/utils/JsonBuilder.h"
#include "td/utils/logging.h"
#include "td/utils/port/thread_local.h"
@ -116,9 +115,7 @@ const char *ClientJson::execute(Slice request) {
}
static ClientManager *get_manager() {
static ClientManager client_manager;
static ExitGuard exit_guard;
return &client_manager;
return ClientManager::get_manager_singleton();
}
static std::mutex extra_mutex;