acl  3.5.3.0
hspool.hpp
浏览该文件的文档.
1 #pragma once
2 #include "../acl_cpp_define.hpp"
3 #include "../stdlib/noncopyable.hpp"
4 #include <list>
5 
6 #ifndef ACL_CLIENT_ONLY
7 
8 struct ACL_HTABLE;
9 
10 namespace acl {
11 
12 class hsclient;
13 class locker;
14 
16 {
17 public:
18  /**
19  * 构造函数
20  * @param addr_rw {const char*} handlersocket 插件在 Mysql 上的监听地址,
21  * 格式为:ip:port,注:该地址是 handlersocket 的读写地址
22  * @param addr_rd {const char*} handlersocket 插件在 Mysql 上的监听地址,
23  * 格式为:ip:port,注:该地址是 handlersocket 的只读地址
24  * @param cache_enable {bool} 是否内部自动启用行对象缓存机制
25  * @param retry_enable {bool} 当因为网络原因而出错时是否需要进行重试
26  */
27  hspool(const char* addr_rw, const char* addr_rd = NULL,
28  bool cache_enable = true, bool retry_enable = true);
29 
30  ~hspool();
31 
32  /**
33  * 从连接池中获得连接对象
34  * @param dbn {const char*} 数据库名称
35  * @param tbl {const char*} 数据库表名
36  * @param idx {const char*} 索引字段名
37  * @param flds {const char*} 要打开的数据字段名集合,格式为
38  * 由分隔符 ",; \t" 分隔的字段名称,如:user_id,user_name,user_mail
39  * @param readonly {bool} 是否仅以只读方式打开
40  */
41  hsclient* peek(const char* dbn, const char* tbl,
42  const char* idx, const char* flds, bool readonly = false);
43 
44  /**
45  * 归还连接对象
46  * @param client {hsclient*}
47  */
48  void put(hsclient* client);
49 private:
50  char* addr_rw_;
51  char* addr_rd_;
52  bool cache_enable_;
53  bool retry_enable_;
54  std::list<hsclient*> pool_;
55  locker* locker_;
56 };
57 
58 } // namespace acl
59 
60 #endif // ACL_CLIENT_ONLY
#define ACL_CPP_API