|
@@ -30,7 +30,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
-#define DB_UPDATE_INTERVAL_MILLI 20000
|
|
|
+#define DB_UPDATE_INTERVAL_MILLI 20000
|
|
|
+
|
|
|
+//胡力 数据库连接线路的默认个数 默认5个
|
|
|
+#define DB_CONNECT_QUEUE_SIZE 5
|
|
|
+
|
|
|
+
|
|
|
|
|
|
class Database_controller : public Singleton<Database_controller>
|
|
|
{
|
|
@@ -45,13 +50,23 @@ public:
|
|
|
std::string db_name;
|
|
|
} db_param;
|
|
|
|
|
|
+ //huli 新增数据库的状态
|
|
|
+ enum Database_controller_status
|
|
|
+ {
|
|
|
+ E_UNKNOWN = 0, //默认未知
|
|
|
+ E_READY = 1, //正常待机
|
|
|
+ E_DISCONNECT = 2, //断连
|
|
|
+ E_FAULT = 3, //故障
|
|
|
+ };
|
|
|
+
|
|
|
+
|
|
|
// 必须关闭拷贝构造和赋值构造,只能通过 get_instance 函数来进行操作唯一的实例。
|
|
|
Database_controller(const Database_controller &) = delete;
|
|
|
Database_controller &operator=(const Database_controller &) = delete;
|
|
|
~Database_controller() = default;
|
|
|
|
|
|
//初始化
|
|
|
- Error_manager database_controller_init(std::string ip, int port, std::string username, std::string pass, std::string db_name, int conn_size=5);
|
|
|
+ Error_manager database_controller_init(std::string ip, int port, std::string username, std::string pass, std::string db_name, int conn_size=DB_CONNECT_QUEUE_SIZE);
|
|
|
//反初始化
|
|
|
Error_manager database_controller_uninit();
|
|
|
//数据库连接状态
|
|
@@ -73,10 +88,14 @@ private:
|
|
|
void database_status_update();
|
|
|
// 检查连接状态
|
|
|
Error_manager check_status();
|
|
|
- // 补充连接
|
|
|
+ // 补充连接, 创建 数据库连接的通路
|
|
|
Error_manager fill_up_pool(int add_num);
|
|
|
|
|
|
private:
|
|
|
+
|
|
|
+ //huli 新增数据库的状态
|
|
|
+ Database_controller_status m_database_controller_status;
|
|
|
+
|
|
|
//mysql驱动句柄
|
|
|
sql::Driver * m_mysql_driver;
|
|
|
//连接状态
|
|
@@ -87,7 +106,7 @@ private:
|
|
|
std::atomic_bool mb_exit;
|
|
|
//连接池访问锁
|
|
|
std::mutex m_conn_mutex;
|
|
|
- //数据库连接池
|
|
|
+ //数据库连接通路的集合
|
|
|
std::queue< boost::shared_ptr< sql::Connection> > m_db_conn_pool;
|
|
|
//守护线程
|
|
|
std::thread *mp_guard_thread;
|