This commit is contained in:
Torsten (PC)
2026-01-14 14:36:57 +01:00
parent cd739fb52e
commit 1fe77c0905
21 changed files with 1267 additions and 0 deletions

31
src/connection_pool.h Normal file
View File

@@ -0,0 +1,31 @@
#pragma once
#include <queue>
#include <memory>
#include <mutex>
#include <condition_variable>
#include "database.h"
class ConnectionPool {
public:
ConnectionPool(const std::string &host, const std::string &port,
const std::string &name, const std::string &user,
const std::string &password, int pool_size);
std::shared_ptr<Database> getConnection();
void releaseConnection(std::shared_ptr<Database> conn);
private:
std::queue<std::shared_ptr<Database>> pool;
std::mutex pool_mutex;
std::condition_variable pool_cv;
std::string host;
std::string port;
std::string name;
std::string user;
std::string password;
void createPool(int pool_size);
void refreshConnection(std::shared_ptr<Database> &conn);
};