NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
载入中...
搜索中...
未找到
session_store.hpp
浏览该文件的文档.
1#ifndef NEFORCE_NETWORK_HTTP_SESSION_STORE_HPP__
2#define NEFORCE_NETWORK_HTTP_SESSION_STORE_HPP__
3
8
12NEFORCE_BEGIN_NAMESPACE__
13NEFORCE_BEGIN_HTTP__
14
19
27public:
28 virtual ~session_store() = default;
29
30 virtual optional<http_session> load(const string& id) = 0;
31 virtual void save(const http_session& session) = 0;
32 virtual void remove(const string& id) = 0;
33 NEFORCE_NODISCARD virtual bool exists(const string& id) const = 0;
34 virtual void cleanup() = 0;
35 NEFORCE_NODISCARD virtual size_t count() const = 0;
36
37 // TODO: Session event callbacks — on_create / on_destroy / on_expire hooks for audit logging and cleanup actions
38 // TODO: JDBC session store — database-backed session persistence for relational DBs (MySQL, PostgreSQL, SQLite)
39 // TODO: MongoDB session store — document-based session storage for MongoDB deployments
40};
41
46class memory_session_store final : public session_store {
47private:
48 mutable shared_mutex mutex_;
50
51public:
52 memory_session_store() = default;
53
54 optional<http_session> load(const string& id) override {
56 auto it = sessions_.find(id);
57 if (it != sessions_.end() && it->second.is_valid()) {
58 return optional<http_session>{it->second};
59 }
60 return none;
61 }
62
63 void save(const http_session& session) override {
64 lock<shared_mutex> lk(mutex_);
65 sessions_[session.id] = session;
66 }
67
68 void remove(const string& id) override {
69 lock<shared_mutex> lk(mutex_);
70 sessions_.erase(id);
71 }
72
73 bool exists(const string& id) const override {
75 auto it = sessions_.find(id);
76 return it != sessions_.end() && it->second.is_valid();
77 }
78
79 void cleanup() override {
80 lock<shared_mutex> lk(mutex_);
81 for (auto it = sessions_.begin(); it != sessions_.end();) {
82 if (!it->second.is_valid() || it->second.expired()) {
83 it = sessions_.erase(it);
84 } else {
85 ++it;
86 }
87 }
88 }
89
90 size_t count() const override {
92 return sessions_.size();
93 }
94};
95 // HTTP
97
98NEFORCE_END_HTTP__
99NEFORCE_END_NAMESPACE__
100#endif // NEFORCE_NETWORK_HTTP_SESSION_STORE_HPP__
锁管理器模板
constexpr none_t none
默认空表示
HTTP Cookie和会话管理
可选值类型
共享互斥锁支持
string id
会话唯一标识符