base
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
/***************************************************************************
|
||||
Database Connection Pool
|
||||
-----------------------------------------
|
||||
begin : 2012/05/13
|
||||
copyright : (C) 2011 SolutionBox Inc.
|
||||
author : Service 1 Team
|
||||
email : svc1@solbox.com
|
||||
version : 3.1.0
|
||||
|
||||
CopyRight(C) 2011 SolutionBox Inc. All Rights reserved.
|
||||
Redistribution and use in source and binary forms, with or with out
|
||||
modification, are not permitted in outside of SolutionBox Inc.
|
||||
***************************************************************************/
|
||||
#ifndef __DATABASE_CONNECTION_POOL__
|
||||
#define __DATABASE_CONNECTION_POOL__
|
||||
|
||||
class DataBase;
|
||||
|
||||
class conndbpool
|
||||
{
|
||||
public:
|
||||
enum POOL_STATUSE
|
||||
{
|
||||
POOL_ERR = -1,
|
||||
POOL_FREE = 0,
|
||||
POOL_USE = 1
|
||||
};
|
||||
public:
|
||||
conndbpool(databaseinfo info);
|
||||
virtual ~conndbpool();
|
||||
|
||||
int CreatePool( int poolcnt = 4 );
|
||||
int DestroyPool();
|
||||
DataBase* GetConnFromPool(int timeout = 10);
|
||||
void ReleaseConnToPool(DataBase * t, bool success = true);
|
||||
int SetKeepAliveTimeout(int sec);
|
||||
|
||||
void printstatus(string prefixed = "");
|
||||
|
||||
int GetFreePoolCnt();
|
||||
|
||||
bool IsExit() { return m_exitpool; }
|
||||
bool IsTimeoutAlive();
|
||||
bool SendAliveMsg();
|
||||
|
||||
void SetDatabaseInfo(databaseinfo info) { m_dbinfo = info; }
|
||||
databaseinfo GetDatabaseInfo() { return m_dbinfo; }
|
||||
size_t GetPoolSize() { return m_poolmap.size(); }
|
||||
|
||||
// 2014.06.06 dadamin
|
||||
// 현재 DB 형상 체크
|
||||
bool SetTargetTableType(DataBase * d);
|
||||
// 작업할 메타 테이블명
|
||||
string GetMetaTableName(const char * tranid);
|
||||
// display_name 컬럼 사용 유무
|
||||
bool UseDisplayname() { return (m_tabletype == 1); }
|
||||
|
||||
private:
|
||||
static void* KeepPoolAlive(void*);
|
||||
|
||||
private:
|
||||
databaseinfo m_dbinfo;
|
||||
map<DataBase*, short> m_poolmap;
|
||||
pthread_mutex_t m_mutex;
|
||||
bool m_exitpool;
|
||||
DataBase* m_lastset;
|
||||
|
||||
int m_alivetime;
|
||||
pthread_t m_keepalive;
|
||||
pthread_cond_t m_alivecond;
|
||||
pthread_mutex_t m_alivemutex;
|
||||
|
||||
// 2014.06.04 dadamin
|
||||
// -1: unset, 0: t_dav_resource, 1: t_meat_[sp_svc_tran_id]
|
||||
int m_tabletype;
|
||||
};
|
||||
|
||||
class masterdbpool : public conndbpool
|
||||
{
|
||||
public:
|
||||
static void init(databaseinfo info);
|
||||
static masterdbpool* getInstance();
|
||||
static int release();
|
||||
|
||||
private:
|
||||
masterdbpool(databaseinfo info);
|
||||
~masterdbpool();
|
||||
|
||||
private:
|
||||
static masterdbpool* m_inst;
|
||||
};
|
||||
|
||||
class slavedbpool : public conndbpool
|
||||
{
|
||||
public:
|
||||
static void init(databaseinfo info);
|
||||
static slavedbpool* getInstance();
|
||||
static int release();
|
||||
|
||||
private:
|
||||
slavedbpool(databaseinfo info);
|
||||
~slavedbpool();
|
||||
|
||||
private:
|
||||
static slavedbpool* m_inst;
|
||||
};
|
||||
|
||||
#endif // __DATABASE_CONNECTION_POOL__
|
||||
Reference in New Issue
Block a user