acl  3.5.3.0
acl::session类 参考abstract

#include <session.hpp>

+ 类 acl::session 继承关系图:
+ acl::session 的协作图:

Public 成员函数

 session (time_t ttl=0, const char *sid=NULL)
 
virtual ~session (void)
 
void reset (void)
 
virtual const char * get_sid (void) const
 
void set_sid (const char *sid)
 
virtual bool flush ()
 
virtual bool set (const char *name, const char *value)
 
virtual bool set (const char *name, const void *value, size_t len)
 
virtual bool set_delay (const char *name, const void *value, size_t len)
 
const char * get (const char *name)
 
virtual const session_stringget_buf (const char *name)
 
virtual bool del_delay (const char *name)
 
virtual bool del (const char *name)
 
bool set_ttl (time_t ttl, bool delay)
 
time_t get_ttl (void) const
 
virtual bool remove (void)=0
 
virtual bool get_attrs (std::map< string, session_string > &attrs)=0
 
virtual bool get_attrs (const std::vector< string > &names, std::vector< session_string > &values)
 
virtual bool set_attrs (const std::map< string, session_string > &attrs)=0
 
- Public 成员函数 继承自 acl::dbuf_obj
 dbuf_obj (dbuf_guard *guard=NULL)
 
virtual ~dbuf_obj ()
 
int pos () const
 
dbuf_guardget_guard () const
 

Protected 成员函数

virtual bool set_timeout (time_t ttl)=0
 

静态 Protected 成员函数

static void serialize (const std::map< string, session_string > &attrs, string &out)
 
static void deserialize (string &buf, std::map< string, session_string > &attrs)
 
static void attrs_clear (std::map< string, session_string > &attrs)
 

Protected 属性

session_string sid_
 
time_t ttl_
 
bool sid_saved_
 
bool dirty_
 
std::map< string, session_stringattrs_
 
std::map< string, session_stringattrs_cache_
 

详细描述

session 类,该类使用 memcached 存储 session 数据

在文件 session.hpp38 行定义.

构造及析构函数说明

◆ session()

acl::session::session ( time_t  ttl = 0,
const char *  sid = NULL 
)

当构造函数的参数 sid 非空时,则该 session 对象使用该 sid;否则内部会自动生成一个 sid,用户应该通过 get_sid() 获得这个自动生成的 sid 以便于每次查询该 sid 对应的数据

参数
ttl{time_t} 指定 session 的生存周期(秒)
sid{const char*} 非空时,则 session 的 sid 使 该值,否则内部会产生一个随机的 session sid,该随机的 sid 可以通过调用 get_sid() 获得;当然在使用过程中,用户 也可以通过 set_sid() 修改本对象的 session sid; 此外,如果该 sid 为空,则如果用户查查找某个 sid 对应的 数据,则用户必须先调用 set_sid()

◆ ~session()

virtual acl::session::~session ( void  )
virtual

成员函数说明

◆ attrs_clear()

static void acl::session::attrs_clear ( std::map< string, session_string > &  attrs)
staticprotected

◆ del()

virtual bool acl::session::del ( const char *  name)
virtual

acl::redis_session 重载.

◆ del_delay()

virtual bool acl::session::del_delay ( const char *  name)
virtual

从 session 中删除指定属性值,当所有的变量都删除 时会将整个对象从 memcached 中删除

参数
name{const char*} session 属性名,非空
返回
{bool} true 表示成功(含不存在情况),false 表示删除失败 注:当采用延迟方式删除某个属性时,则延迟发送更新指令到后端的 缓存服务器,当用户调用了 session::flush 后再进行数据更新,这 样可以提高传输效率;否则,则立刻更新数据

◆ deserialize()

static void acl::session::deserialize ( string buf,
std::map< string, session_string > &  attrs 
)
staticprotected

◆ flush()

virtual bool acl::session::flush ( )
virtual

当调用 session 类的 set/set_ttl 时,如果最后一个参数 delay 为 true, 则必须通过调用本函数将数据真正进行更新

返回
{bool} 数据更新是否成功

◆ get()

const char* acl::session::get ( const char *  name)

从 session 中取得字符串类型属性值

参数
name{const char*} session 属性名,非空
返回
{const char*} session 属性值,返回的指针地址永远非空,用户 可以通过判断返回的是否是空串(即: "\0")来判断出错或不存在 注:该函数返回非空数据后,用户应该立刻保留此返回值,因为下次 的其它函数调用可能会清除该临时返回数据

◆ get_attrs() [1/2]

virtual bool acl::session::get_attrs ( std::map< string, session_string > &  attrs)
pure virtual

从后端缓存中获得对应 sid 的属性对象集合

参数
attrs{std::map<string, session_string>&}
返回
{bool}

acl::memcache_session , 以及 acl::redis_session 内被实现.

◆ get_attrs() [2/2]

virtual bool acl::session::get_attrs ( const std::vector< string > &  names,
std::vector< session_string > &  values 
)
virtual

从后端缓存中获得对应 sid 的指定属性集合

参数
names{const std::vector<string>&} 属性名集合
values{std::vector<session_string>&} 存储对应的属性值结果集
返回
{bool} 操作是否成功

acl::redis_session 重载.

◆ get_buf()

virtual const session_string* acl::session::get_buf ( const char *  name)
virtual

从 session 中取得二进制数据类型的属性值

参数
name{const char*} session 属性名,非空
返回
{const session_string*} session 属性值,返回空时 表示出错或不存在 注:该函数返回非空数据后,用户应该立刻保留此返回值,因为下次 的其它函数调用可能会清除该临时返回数据

acl::redis_session 重载.

◆ get_sid()

virtual const char* acl::session::get_sid ( void  ) const
inlinevirtual

获得本 session 对象的唯一 ID 标识

返回
{const char*} 非空

在文件 session.hpp65 行定义.

66  {
67  return sid_.c_str();
68  }
char * c_str() const
session_string sid_
Definition: session.hpp:211

◆ get_ttl()

time_t acl::session::get_ttl ( void  ) const
inline

获得本 session 对象中记录的 session 生存周期;该值有可能 与真正存储在缓存服务器的时间不一致,因为有可能其它的实例 重新设置了 session 在缓存服务器上的生存周期

返回
{time_t}

在文件 session.hpp160 行定义.

161  {
162  return ttl_;
163  }
time_t ttl_
Definition: session.hpp:212

◆ remove()

virtual bool acl::session::remove ( void  )
pure virtual

使 session 从服务端的缓存中删除即使 session 失效

返回
{bool} 是否使 session 失效

acl::memcache_session , 以及 acl::redis_session 内被实现.

◆ reset()

void acl::session::reset ( void  )

重置内部状态,清理掉一些临时数据

◆ serialize()

static void acl::session::serialize ( const std::map< string, session_string > &  attrs,
string out 
)
staticprotected

◆ set() [1/2]

virtual bool acl::session::set ( const char *  name,
const char *  value 
)
virtual

向 session 中添加新的字符串属性,同时设置该 session 的过期时间间隔(秒)

参数
name{const char*} session 名,非空
value{const char*} session 值,非空
返回
{bool} 返回 false 表示出错

acl::redis_session 重载.

◆ set() [2/2]

virtual bool acl::session::set ( const char *  name,
const void *  value,
size_t  len 
)
virtual

向 session 中添加新的属性对象并设置该 session 的过期时间间隔(秒),

参数
name{const char*} session 属性名,非空
value{const char*} session 属性值,非空
len{size_t} value 值长度
返回
{bool} 返回 false 表示出错

acl::redis_session 重载.

◆ set_attrs()

virtual bool acl::session::set_attrs ( const std::map< string, session_string > &  attrs)
pure virtual

向后端缓存写入对应 sid 的属性对象集合

参数
attrs{std::map<string, session_string>&}
返回
{bool}

acl::memcache_session , 以及 acl::redis_session 内被实现.

◆ set_delay()

virtual bool acl::session::set_delay ( const char *  name,
const void *  value,
size_t  len 
)
virtual

延迟向 session 中添加新的属性对象并设置该 session 的过期时间间隔(秒), 当用户调用了 session::flush 后再进行数据更新, 这样可以提高传输效率

参数
name{const char*} session 属性名,非空
value{const char*} session 属性值,非空
len{size_t} value 值长度
返回
{bool} 返回 false 表示出错

◆ set_sid()

void acl::session::set_sid ( const char *  sid)

设置本 session 对象的唯一 ID 标识

参数
sid{const char*} 非空 注:调用本函数后,会自动清除之前的中间缓存数据

◆ set_timeout()

virtual bool acl::session::set_timeout ( time_t  ttl)
protectedpure virtual

acl::memcache_session , 以及 acl::redis_session 内被实现.

◆ set_ttl()

bool acl::session::set_ttl ( time_t  ttl,
bool  delay 
)

重新设置 session 在缓存服务器上的缓存时间

参数
ttl{time_t} 生存周期(秒)
delay{bool} 当为 true 时,则延迟发送更新指令到后端的 缓存服务器,当用户调用了 session::flush 后再进行数据更新,这 样可以提高传输效率;当为 false 时,则立刻更新数据
返回
{bool} 设置是否成功

类成员变量说明

◆ attrs_

std::map<string, session_string> acl::session::attrs_
protected

在文件 session.hpp219 行定义.

◆ attrs_cache_

std::map<string, session_string> acl::session::attrs_cache_
protected

在文件 session.hpp220 行定义.

◆ dirty_

bool acl::session::dirty_
protected

在文件 session.hpp218 行定义.

◆ sid_

session_string acl::session::sid_
protected

在文件 session.hpp211 行定义.

◆ sid_saved_

bool acl::session::sid_saved_
protected

在文件 session.hpp217 行定义.

◆ ttl_

time_t acl::session::ttl_
protected

在文件 session.hpp212 行定义.


该类的文档由以下文件生成: