acl  3.5.3.0
HttpSession.hpp
浏览该文件的文档.
1 #pragma once
2 #include "../acl_cpp_define.hpp"
3 #include "../stdlib/dbuf_pool.hpp"
4 #include "../session/session.hpp"
5 #include <map>
6 
7 #ifndef ACL_CLIENT_ONLY
8 
9 namespace acl {
10 
11 class session;
12 
13 /**
14  * 服务端 HttpSession 类,目前该类的数据存储只能支持存在 memcached 上
15  */
17 {
18 public:
19  /**
20  * 构造函数
21  * @param session {session&} 缓存对象
22  */
24  virtual ~HttpSession(void);
25 
26  /**
27  * 获得客户端在服务端存储的 session 的字符串属性值
28  * @param name {const char*} session 属性名,非空
29  * @return {const char*} session 属性值,返回地址永远非空指针,用户
30  * 可以通过判断返回地址是否为空串("\0")来判断是否存在或出错
31  * 注:该函数返回非空数据后,用户应该立刻保留此返回值,因为下次
32  * 的其它函数调用可能会清除该临时返回数据
33  */
34  virtual const char* getAttribute(const char* name) const;
35 
36  /**
37  * 获得客户端在服务端存储的 session 的二进制属性值
38  * @param name {const char*} session 属性名,非空
39  * @param size {size_t*} 该参数非空且属性值非空时,该指针地址
40  * 存储返回属性值的大小
41  * @return {const void*} session 属性值,为空指针时说明不存在
42  * 或内部查询失败
43  * 注:该函数返回非空数据后,用户应该立刻保留此返回值,因为下次
44  * 的其它函数调用可能会清除该临时返回数据
45  */
46  virtual const void* getAttribute(const char* name, size_t* size) const;
47 
48  /**
49  * 从服务端获得对应客户端的所有会话属性对象,这样可以减少与服务端的交互次数
50  * @param attrs {std::map<string, session_string>&}
51  * @return {bool} 是否成功
52  */
53  virtual bool getAttributes(std::map<string, session_string>& attrs) const;
54 
55  /**
56  * 从服务端获得对应客户端的相应属性集合
57  * @param names {const std::vector<string>&} 属性名集合
58  * @param values {std::vector<session_string>&} 存储对应的属性值结果集
59  * @return {bool} 是否成功
60  */
61  virtual bool getAttributes(const std::vector<string>& names,
62  std::vector<session_string>& values) const;
63 
64  /**
65  * 在设置服务端设置 session 的字符串属性值
66  * @param name {const char*} session 属性名,非空
67  * @param value {const char*} session 属性值,非空
68  * @return {bool} 返回 false 说明设置失败
69  */
70  virtual bool setAttribute(const char* name, const char* value);
71 
72  /**
73  * 在设置服务端设置 session 的二进制属性值
74  * @param name {const char*} session 属性名,非空
75  * @param value {const void*} session 属性值,非空
76  * @param len {size_t} value 数据长度
77  * @return {bool} 返回 false 说明设置失败
78  */
79  virtual bool setAttribute(const char* name, const void* value, size_t len);
80 
81  /**
82  * 在服务端设置 session 属性集合,这样可以减少与后端的交互次数
83  * @param attrs {const std::map<string, session_string>&} 属性集合对象
84  * @return {bool} 设置是否成功
85  */
86  virtual bool setAttributes(const std::map<string, session_string>& attrs);
87 
88  /**
89  * 删除客户端 session 中的某个属性值
90  * @param name {const char*} session 属性名,非空
91  * @return {bool} 删除是否成功
92  */
93  virtual bool removeAttribute(const char* name);
94 
95  /**
96  * 设置 session 在缓存服务器上的生存周期
97  * @param ttl {time_t} 生存周期(秒)
98  * @return {bool} 是否成功
99  */
100  virtual bool setMaxAge(time_t ttl);
101 
102  /**
103  * 使 session 从服务端的缓存中删除即使 session 失效
104  * @return {bool} 是否使 session 失效
105  */
106  virtual bool invalidate(void);
107 
108  /**
109  * 获得所产生的 session ID 标识
110  * @return {const char*} 永远返回以 '\0' 结尾的非空指针,可根据返回
111  * 值是否为空串("\0")来判断 sid 是否存在
112  */
113  const char* getSid(void) const;
114 
115 protected:
117 };
118 
119 } // namespace acl
120 
121 #endif // ACL_CLIENT_ONLY
HTTP_API void const char * name
Definition: lib_http.h:620
session & session_
#define ACL_CPP_API