会话类
这个类的作用和逻辑比较简单,用户在登录后会创建一个会话类的实例,之后客户端发起各种增删查改操作,都会附带一个session_id;服务端在收到session_id后,会找到这个实例,进一步找到其对应的用户实例,来执行具体的业务逻辑。
属性和方法如下:
实例属性:
属性名称 | 类型 | 描述 |
---|---|---|
id | std::string | 会话id,用户登录时随机生成,作为后续通信表明身份的凭证。 |
active_time | Base::DateTime | 该会话最后一次活动的时间 |
user | User& | 对应的用户实例的引用 |
实例方法
实例方法 | 描述 |
---|---|
各属性的get方法 | 包括get_id()、get_active_time()、get_user() |
类方法
类方法 | 描述 |
---|---|
static Session& CreateSession(User& user) | 创建session实例,需要传入用户实例的引用 |
static Session* GetSessionPointer(const std::string& session_id) | 通过session_id获取session实例 |
static bool EraseSessionByUser(const User& user) | 删除用户实例对应的session |
static void AsyncLoadFromDataBase() | 从数据库加载信息到STL容器(异步),以后获取信息就可以跳过数据库直接从内存获取 |
static void WaitForReady() | 等待会话库就绪(和上面的方法成对,调用该方法会阻塞线程,直到已经从数据库加载完所需数据) |
具体代码略。