7#include <unordered_map>
9namespace malloy::http::sessions
29 record(id_type&&
id) :
35 storage_set(
const key_type& key, value_type value)
override
38 m_data.insert_or_assign(key, value);
49 std::optional<key_type>
50 storage_get(
const key_type& key)
const override
52 const auto& it = m_data.find(key);
53 if (it != std::cend(m_data))
60 storage_remove(
const key_type& key)
override
62 return m_data.erase(key) > 0;
66 std::unordered_map<std::string, std::string> m_data;
71 std::shared_ptr<session>
74 auto ses = std::make_shared<record>(
78 m_sessions.try_emplace(ses->id(), ses);
84 std::shared_ptr<session>
85 get(
const id_type&
id)
override
87 if (!m_sessions.contains(
id))
90 return m_sessions.at(
id);
101 return std::erase_if(m_sessions, [&max_lifetime](
const auto& item) {
102 const auto& [id, rec] = item;
103 return rec->access_time_older_than(max_lifetime);
108 std::unordered_map<id_type, std::shared_ptr<record>> m_sessions;
Definition: storage_memory.hpp:19
std::shared_ptr< session > get(const id_type &id) override
Definition: storage_memory.hpp:85
std::size_t destroy_expired(const std::chrono::seconds &max_lifetime) override
Definition: storage_memory.hpp:99
std::shared_ptr< session > create(id_type id) override
Definition: storage_memory.hpp:72
void destroy(id_type id) override
Definition: storage_memory.hpp:93
Definition: session.hpp:233
Definition: storage.hpp:17