acl  3.5.3.0
mysql_manager.hpp
浏览该文件的文档.
1 #pragma once
2 #include "../acl_cpp_define.hpp"
3 #include <map>
4 #include "../stdlib/string.hpp"
5 #include "../connpool/connect_manager.hpp"
6 
7 #if !defined(ACL_CLIENT_ONLY) && !defined(ACL_DB_DISABLE)
8 
9 namespace acl {
10 
11 class mysql_conf;
12 
14 {
15 public:
16  mysql_manager(time_t idle_ttl = 120);
17  ~mysql_manager();
18 
19  /**
20  * 添加一个数据库实例方法一
21  * @param dbaddr {const char*} mysql 服务器地址,格式:IP:PORT,
22  * 在 UNIX 平台下可以为 UNIX 域套接口
23  * @param dbname {const char*} 数据库名
24  * @param dbuser {const char*} 数据库用户
25  * @param dbpass {const char*} 数据库用户密码
26  * @param dblimit {size_t} 数据库连接池的最大连接数限制
27  * @param dbflags {unsigned long} mysql 标记位
28  * @param auto_commit {bool} 是否自动提交
29  * @param conn_timeout {int} 连接数据库超时时间(秒)
30  * @param rw_timeout {int} 与数据库通信时的IO时间(秒)
31  * @param charset {const char*} 连接数据库时的字符集
32  * @return {mysql_manager&}
33  */
34  mysql_manager& add(const char* dbaddr, const char* dbname,
35  const char* dbuser, const char* dbpass,
36  size_t dblimit = 64, unsigned long dbflags = 0,
37  bool auto_commit = true, int conn_timeout = 60,
38  int rw_timeout = 60, const char* charset = "utf8");
39 
40  /**
41  * 添加一个数据库实例方法二
42  * @param conf {const mysql_conf&}
43  * @return {mysql_manager&}
44  */
45  mysql_manager& add(const mysql_conf& conf);
46 
47 protected:
48  /**
49  * 基类 connect_manager 虚函数的实现
50  * @param addr {const char*} 服务器监听地址,格式:ip:port
51  * @param count {size_t} 连接池的大小限制,该值为 0 时则没有限制
52  * @param idx {size_t} 该连接池对象在集合中的下标位置(从 0 开始)
53  * @return {connect_pool*} 返回创建的连接池对象
54  */
55  connect_pool* create_pool(const char* addr, size_t count, size_t idx);
56 
57 private:
58  time_t idle_ttl_; // 数据库连接的空闲过期时间
59  std::map<string, mysql_conf*> dbs_;
60 };
61 
62 } // namespace acl
63 
64 #endif // !defined(ACL_CLIENT_ONLY) && !defined(ACL_DB_DISABLE)
#define ACL_CPP_API