Network System 0.1.1
High-performance modular networking library for scalable client-server applications
Loading...
Searching...
No Matches
session_manager.h
Go to the documentation of this file.
1/*****************************************************************************
2BSD 3-Clause License
3
4Copyright (c) 2025, kcenon
5All rights reserved.
6*****************************************************************************/
7
8#pragma once
9
12
13namespace kcenon::network::core {
14
23 std::shared_ptr<kcenon::network::session::messaging_session> session;
24 std::chrono::steady_clock::time_point created_at;
25 std::chrono::steady_clock::time_point last_activity;
26
27 explicit session_info(
28 std::shared_ptr<kcenon::network::session::messaging_session> sess)
29 : session(std::move(sess))
30 , created_at(std::chrono::steady_clock::now())
32};
33
74class session_manager : public session_manager_base<session::messaging_session> {
75public:
76 using session_ptr = std::shared_ptr<session::messaging_session>;
78
79 explicit session_manager(const session_config& config = session_config())
80 : base_type(config) {}
81
90 [[nodiscard]] auto get_session_info(const std::string& session_id) const
91 -> std::optional<session_info> {
92 std::shared_lock lock(sessions_mutex_);
93 auto it = active_sessions_.find(session_id);
94 if (it != active_sessions_.end()) {
95 session_info info(it->second.session);
96 info.created_at = it->second.created_at;
97 info.last_activity = it->second.last_activity;
98 return info;
99 }
100 return std::nullopt;
101 }
102
103};
104
105} // namespace kcenon::network::core
Thread-safe session lifecycle management template.
Thread-safe TCP session lifecycle management with backpressure.
session_manager(const session_config &config=session_config())
std::shared_ptr< session::messaging_session > session_ptr
auto get_session_info(const std::string &session_id) const -> std::optional< session_info >
Get session info including activity timestamps.
tracing_config config
Definition exporters.cpp:29
Messaging session managing bidirectional message exchange.
Configuration for session management.
Session info struct for backward compatibility.
std::chrono::steady_clock::time_point created_at
std::shared_ptr< kcenon::network::session::messaging_session > session
session_info(std::shared_ptr< kcenon::network::session::messaging_session > sess)
std::chrono::steady_clock::time_point last_activity