ConnectionManager.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <map>
4 #include <memory>
5 #include <mutex>
6 #include <sstream>
7 #include <string>
8 
9 #include <bsoncxx/builder/stream/array.hpp>
10 #include <bsoncxx/builder/stream/document.hpp>
11 #include <bsoncxx/builder/stream/helpers.hpp>
12 #include <bsoncxx/json.hpp>
13 #include <mongocxx/client.hpp>
14 #include <mongocxx/instance.hpp>
15 #include <mongocxx/pool.hpp>
16 #include <mongocxx/stdx.hpp>
17 #include <mongocxx/uri.hpp>
18 
20 {
21 
22  using PoolClientPtr = mongocxx::pool::entry;
23 
24  /**
25  * @brief A manager of multiple mongodb connection
26  */
28  {
29  public:
30  ConnectionManager() = delete;
31 
33  {
34  std::string host = "";
35  unsigned int port = 0;
36  std::string user = "";
37  std::string password = "";
38  std::string database = "Test";
39  int minPoolSize = 5;
40  int maxPoolSize = 100;
41 
43 
44  bool isSet() const;
45 
46  std::string baseUri() const;
47 
48  std::string key() const;
49 
50  std::string uri() const;
51 
52  std::string toString() const;
53  };
54 
55  static mongocxx::pool& Connect(const MongoDBSettings& settings);
56  static bool ConnectionIsValid(const MongoDBSettings& settings,
57  bool forceNewConnection = false);
58  static bool ConnectionExists(const MongoDBSettings& settings);
59 
60  private:
61  static void initialize_if();
62 
63 
64  private:
65  static std::mutex initializationMutex;
66  static bool initialized;
67  static std::map<std::string, std::unique_ptr<mongocxx::pool>> Connections;
68  };
69 } // namespace armarx::armem::server::ltm::mongodb
armarx::armem::server::ltm::mongodb::ConnectionManager::MongoDBSettings::key
std::string key() const
Definition: ConnectionManager.cpp:81
armarx::armem::server::ltm::mongodb::ConnectionManager::MongoDBSettings::isSet
bool isSet() const
Definition: ConnectionManager.cpp:55
armarx::armem::server::ltm::mongodb::ConnectionManager::MongoDBSettings
Definition: ConnectionManager.h:32
armarx::armem::server::ltm::mongodb::ConnectionManager::MongoDBSettings::port
unsigned int port
Definition: ConnectionManager.h:35
armarx::armem::server::ltm::mongodb::ConnectionManager::ConnectionExists
static bool ConnectionExists(const MongoDBSettings &settings)
Definition: ConnectionManager.cpp:168
armarx::armem::server::ltm::mongodb::ConnectionManager::MongoDBSettings::database
std::string database
Definition: ConnectionManager.h:38
armarx::armem::server::ltm::mongodb::ConnectionManager::MongoDBSettings::uri
std::string uri() const
Definition: ConnectionManager.cpp:88
armarx::armem::server::ltm::mongodb::ConnectionManager::Connect
static mongocxx::pool & Connect(const MongoDBSettings &settings)
Definition: ConnectionManager.cpp:114
armarx::armem::server::ltm::mongodb::ConnectionManager::MongoDBSettings::user
std::string user
Definition: ConnectionManager.h:36
armarx::armem::server::ltm::mongodb::ConnectionManager::MongoDBSettings::toString
std::string toString() const
Definition: ConnectionManager.cpp:96
armarx::armem::server::ltm::mongodb
Definition: ConnectionManager.cpp:7
armarx::armem::server::ltm::mongodb::ConnectionManager::MongoDBSettings::baseUri
std::string baseUri() const
Definition: ConnectionManager.cpp:62
armarx::armem::server::ltm::mongodb::ConnectionManager::ConnectionManager
ConnectionManager()=delete
armarx::armem::server::ltm::mongodb::ConnectionManager::MongoDBSettings::maxPoolSize
int maxPoolSize
Definition: ConnectionManager.h:40
armarx::armem::server::ltm::mongodb::ConnectionManager::MongoDBSettings::MongoDBSettings
MongoDBSettings()
Definition: ConnectionManager.cpp:13
armarx::armem::server::ltm::mongodb::ConnectionManager::MongoDBSettings::host
std::string host
Definition: ConnectionManager.h:34
armarx::armem::server::ltm::mongodb::PoolClientPtr
mongocxx::pool::entry PoolClientPtr
Definition: ConnectionManager.h:22
armarx::armem::server::ltm::mongodb::ConnectionManager::ConnectionIsValid
static bool ConnectionIsValid(const MongoDBSettings &settings, bool forceNewConnection=false)
Definition: ConnectionManager.cpp:135
armarx::armem::server::ltm::mongodb::ConnectionManager
A manager of multiple mongodb connection.
Definition: ConnectionManager.h:27
armarx::armem::server::ltm::mongodb::ConnectionManager::MongoDBSettings::minPoolSize
int minPoolSize
Definition: ConnectionManager.h:39
armarx::armem::server::ltm::mongodb::ConnectionManager::MongoDBSettings::password
std::string password
Definition: ConnectionManager.h:37