acl  3.5.3.0
db_pool.hpp
浏览该文件的文档.
1 #pragma once
2 #include "../acl_cpp_define.hpp"
3 #include <list>
4 #include "../db/db_handle.hpp"
5 #include "../connpool/connect_pool.hpp"
6 
7 #if !defined(ACL_DB_DISABLE)
8 
9 namespace acl {
10 
11 class db_handle;
12 class locker;
13 
15 {
16 public:
17  /**
18  * 数据库构造函数
19  * @param dbaddr {const char*} 数据库地址
20  * @param count {size_t} 连接池最大连接个数限制
21  * @param idx {size_t} 该连接池对象在集合中的下标位置(从 0 开始)
22  */
23  db_pool(const char* dbaddr, size_t count, size_t idx = 0);
24  virtual ~db_pool() {};
25 
26  /**
27  * 从数据库连接池获得一个数据库对象,并且要求打开数据库连接,即用户不必
28  * 显式地再调用 db_handle::open 过程;
29  * 用完后必须调用 db_pool->put(db_handle*) 将连接归还至数据库连接池,
30  * 由该函数获得的连接句柄不能 delete,否则会造成连接池的内部计数器出错
31  * @return {db_handle*} 数据库连接对象,返回空表示出错
32  */
33  db_handle* peek_open();
34 
35  /**
36  * 获得当前数据库连接池的最大连接数限制
37  * @return {size_t}
38  */
39  size_t get_dblimit() const
40  {
41  return get_max();
42  }
43 
44  /**
45  * 获得当前数据库连接池当前的连接数
46  * @return {size_t}
47  */
48  size_t get_dbcount() const
49  {
50  return get_count();
51  }
52 
53  /**
54  * 设置数据库连接池中空闲连接的生存周期(秒)
55  * @param ttl {int} 生存周期(秒)
56  */
57  void set_idle(int ttl)
58  {
59  set_idle_ttl(ttl);
60  }
61 };
62 
64 {
65 public:
66  db_guard(db_pool& pool) : connect_guard(pool) {}
67  ~db_guard(void);
68 };
69 
70 } // namespace acl
71 
72 #endif // !defined(ACL_DB_DISABLE)
virtual ~db_pool()
Definition: db_pool.hpp:24
size_t get_dblimit() const
Definition: db_pool.hpp:39
db_guard(db_pool &pool)
Definition: db_pool.hpp:66
size_t get_dbcount() const
Definition: db_pool.hpp:48
void set_idle(int ttl)
Definition: db_pool.hpp:57
#define ACL_CPP_API