/
Shymer123
/
LumenServer
Обзор
Документация
Войти
/
Shymer123
/
LumenServer
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Server/SourceFiles/Core/Infrastructure/DatabaseConnectionPool.h
39 строк
1 KB
Shymer123
Initial commit: LumenServer
20 июн 2026, 12:43
20 июн 2026, 12:43
173f14c
Код
Авторство
О чём код?
#ifndef DATABASECONNECTIONPOOL_H #define DATABASECONNECTIONPOOL_H #include <cstddef> #include <functional> #include <memory> #include <condition_variable> #include <queue> #include "Storage/Db/IDatabase.h" namespace Core::Infrastructure { class DatabaseConnectionPool { public: explicit DatabaseConnectionPool(size_t poolSize, std::function<std::unique_ptr<Storage::Db::IDatabase>()> factory); bool connect(const Core::Settings::DatabaseSettings& dbSettings); std::unique_ptr<Storage::Db::IDatabase> acquire(); void release(std::unique_ptr<Storage::Db::IDatabase> conn); inline size_t size() const { return m_poolSize; } inline size_t available() const { return m_pool.size(); } inline bool isConnected() const { return m_connected; } private: std::queue<std::unique_ptr<Storage::Db::IDatabase>> m_pool; size_t m_poolSize; std::function<std::unique_ptr<Storage::Db::IDatabase>()> m_factory; bool m_connected = false; Core::Settings::DatabaseSettings m_dbSettings; std::mutex m_mutex; std::condition_variable m_cv; }; } // namespace Core::Infrastructure #endif // DATABASECONNECTIONPOOL_H