parent
e85a403f44
commit
9ea53b322c
@ -0,0 +1,27 @@
|
||||
#ifndef MYSQL_CONNECTION_POOL_HPP
|
||||
#define MYSQL_CONNECTION_POOL_HPP
|
||||
|
||||
#include "ObjectPool.hpp"
|
||||
#include "MysqlClient.hpp"
|
||||
|
||||
|
||||
class MysqlConnectionPool : public ObjectPool<MysqlClient *>
|
||||
{
|
||||
public:
|
||||
|
||||
MysqlConnectionPool();
|
||||
~MysqlConnectionPool();
|
||||
|
||||
MysqlClient* create( const char *host = NULL,
|
||||
const char *user = NULL,
|
||||
const char *passwd = NULL,
|
||||
const char *db = NULL,
|
||||
unsigned int port = 0,
|
||||
const char *unix_socket = NULL,
|
||||
unsigned long clientflag = 0 );
|
||||
|
||||
bool reset(const MysqlClient* client);
|
||||
};
|
||||
|
||||
|
||||
#endif // MYSQL_CONNECTION_POOL_HPP
|
@ -0,0 +1,29 @@
|
||||
#ifndef OBJECT_POOL_HPP
|
||||
#define OBJECT_POOL_HPP
|
||||
|
||||
#include "ConcurrentQueue.hpp"
|
||||
|
||||
template <typename T>
|
||||
class ObjectPool
|
||||
{
|
||||
public:
|
||||
|
||||
ObjectPool();
|
||||
virtual ~ObjectPool();
|
||||
|
||||
void add(const T object);
|
||||
void remove(const T object);
|
||||
void clear();
|
||||
|
||||
T get();
|
||||
virtual void reset(const T object) = 0;
|
||||
void release(const T object);
|
||||
|
||||
|
||||
private:
|
||||
|
||||
ConcurrentQueue<T> m_pool;
|
||||
|
||||
};
|
||||
|
||||
#endif // OBJECT_POOL_HPP
|
@ -0,0 +1,47 @@
|
||||
#include "MysqlConnectionPool.hpp"
|
||||
|
||||
#include "Logger.hpp"
|
||||
|
||||
|
||||
MysqlConnectionPool::MysqlConnectionPool()
|
||||
{
|
||||
TRACE;
|
||||
}
|
||||
|
||||
|
||||
MysqlConnectionPool::~MysqlConnectionPool()
|
||||
{
|
||||
TRACE;
|
||||
}
|
||||
|
||||
|
||||
MysqlClient* MysqlConnectionPool::create( const char* host,
|
||||
const char* user,
|
||||
const char* passwd,
|
||||
const char* db,
|
||||
unsigned int port,
|
||||
const char* unix_socket,
|
||||
long unsigned int clientflag )
|
||||
{
|
||||
TRACE;
|
||||
|
||||
MysqlClient *client = new MysqlClient(host,
|
||||
user,
|
||||
passwd,
|
||||
db,
|
||||
port,
|
||||
unix_socket,
|
||||
clientflag);
|
||||
|
||||
return client;
|
||||
}
|
||||
|
||||
|
||||
bool MysqlConnectionPool::reset(const MysqlClient* client)
|
||||
{
|
||||
TRACE;
|
||||
|
||||
// The MysqlClient is stateless
|
||||
|
||||
return true;
|
||||
}
|
@ -0,0 +1,63 @@
|
||||
#include "ObjectPool.hpp"
|
||||
|
||||
#include "Logger.hpp"
|
||||
|
||||
|
||||
template <typename T>
|
||||
ObjectPool<T>::ObjectPool()
|
||||
: m_pool()
|
||||
{
|
||||
TRACE;
|
||||
}
|
||||
|
||||
|
||||
template <typename T>
|
||||
ObjectPool<T>::~ObjectPool()
|
||||
{
|
||||
TRACE;
|
||||
}
|
||||
|
||||
|
||||
template <typename T>
|
||||
void ObjectPool<T>::add(const T object)
|
||||
{
|
||||
TRACE;
|
||||
m_pool.push(object);
|
||||
}
|
||||
|
||||
|
||||
template <typename T>
|
||||
void ObjectPool<T>::remove(const T object)
|
||||
{
|
||||
TRACE;
|
||||
|
||||
// m_pool.tryPop(object);
|
||||
}
|
||||
|
||||
|
||||
template <typename T>
|
||||
void ObjectPool<T>::clear()
|
||||
{
|
||||
TRACE;
|
||||
|
||||
// while ( !m_pool.empty() )
|
||||
// m_pool.
|
||||
}
|
||||
|
||||
|
||||
template <typename T>
|
||||
T ObjectPool<T>::get()
|
||||
{
|
||||
TRACE;
|
||||
|
||||
return m_pool.waitAndPop();
|
||||
}
|
||||
|
||||
|
||||
template <typename T>
|
||||
void ObjectPool<T>::release(const T object)
|
||||
{
|
||||
TRACE;
|
||||
|
||||
m_pool.push(object);
|
||||
}
|
Loading…
Reference in new issue