acl  3.5.3.0
memcache_session.hpp
浏览该文件的文档.
1 #pragma once
2 #include "../acl_cpp_define.hpp"
3 #include "session.hpp"
4 
5 #ifndef ACL_CLIENT_ONLY
6 
7 namespace acl {
8 
9 class memcache;
10 
11 /**
12  * session 类,该类使用 memcached 存储 session 数据
13  */
15 {
16 public:
17  /**
18  * 构造函数
19  * @param cache_addr {const char*} memcached 服务地址,格式:
20  * IP:PORT,不能为空
21  * @param prefix {const char*} 在 memcached 存储的键值的前缀
22  * @param conn_timeout {int} 连接 memcached 的超时时间(秒)
23  * @param rw_timeout {int} 与 memcached 通讯的 IO 超时时间(秒)
24  * @param ttl {time_t} 生存周期(秒)
25  * @param sid {const char*} session 对应的 sid,当为空时,内部
26  * 会自动生成一个,其它说明请参考基类 session 的说明
27  * @param encode_key {bool} 是否对存储于 memcached 的键值进行编码
28  */
29  memcache_session(const char* cache_addr, int conn_timeout = 180,
30  int rw_timeout = 300, const char* prefix = NULL,
31  time_t ttl = 0, const char* sid = NULL, bool encode_key = true);
32 
33  /**
34  * 以输入的 memcached 的连接对象为参数的构造函数
35  * @param cache {memcache*} 输入的 memcached 连接对象
36  * @param auto_free {bool} 当该参数为 true 时,则要求该
37  * memcached_session 对象析构函数中释放传入的 cache 对象;
38  * 否则则禁止在 memcached_session 的析构函数中释放 cache 对象
39  * @param ttl {time_t} 生存周期(秒)
40  * @param sid {const char*} session 对应的 sid,当为空时,内部
41  * 会自动生成一个,其它说明请参考基类 session 的说明
42  */
43  memcache_session(memcache* cache, bool auto_free = false,
44  time_t ttl = 0, const char* sid = NULL);
45 
46  ~memcache_session(void);
47 
48  // 基类纯虚函数,从 memcached 中获得数据
49  bool get_attrs(std::map<string, session_string>& attrs);
50 
51  // 基类纯虚函数,向 memcached 中添加或修改数据
52  bool set_attrs(const std::map<string, session_string>& attrs);
53 
54  // 基类纯虚函数,从 memcached 中删除数据
55  bool remove();
56 
57 protected:
58  //重新设置 session 在 memcached 上的缓存时间
59  bool set_timeout(time_t ttl);
60 
61 private:
62  memcache* cache_;
63  bool auto_free_;
64 };
65 
66 } // namespace acl
67 
68 #endif // ACL_CLIENT_ONLY
#define ACL_CPP_API