16#include <shared_mutex>
18#include <unordered_map>
135 template <typename SessionType>
137 const std::
string& session_id = "") ->
bool {
163 template <
typename SessionType>
165 const std::string& session_id =
"") -> std::string {
197 [[nodiscard]]
auto get_session(
const std::string& session_id)
const
217 [[nodiscard]]
auto has_session(
const std::string& session_id)
const -> bool;
250 auto
broadcast(std::vector<uint8_t> data) ->
size_t;
369 static auto
generate_id(const std::
string& prefix = "session_") -> std::
string;
378 const std::
string& session_id) -> std::
string;
Value-semantic wrapper for type-erased sessions.
PIMPL implementation hiding all template-related code.
Type-erased session manager that handles any session type.
auto get_total_cleaned_up() const -> uint64_t
Get total cleaned up sessions.
auto is_backpressure_active() const -> bool
Check if backpressure should be applied.
auto get_all_session_ids() const -> std::vector< std::string >
Get all session IDs.
auto add_session_with_id_impl(session_handle handle, const std::string &session_id) -> std::string
unified_session_manager & operator=(unified_session_manager &&)=delete
auto broadcast(std::vector< uint8_t > data) -> size_t
Broadcast data to all connected sessions.
auto cleanup_idle_sessions() -> size_t
Cleanup idle sessions that exceeded idle_timeout.
unified_session_manager & operator=(const unified_session_manager &)=delete
auto update_activity(const std::string &session_id) -> bool
Update activity timestamp for a session.
auto with_session(const std::string &session_id, const std::function< void(session_handle &)> &callback) -> bool
Execute a callback with a session (safer than get_session)
auto get_total_accepted() const -> uint64_t
Get total accepted connections.
auto get_stats() const -> stats
Get comprehensive statistics.
auto stop_all_sessions() -> void
Stop all sessions (alias for clear_all_sessions)
auto add_session(std::shared_ptr< SessionType > session, const std::string &session_id="") -> bool
Add a session using type erasure.
auto set_max_sessions(size_t max_sessions) -> void
Set maximum sessions.
auto get_utilization() const -> double
Get current session utilization.
auto increment_rejected() -> void
auto has_session(const std::string &session_id) const -> bool
Check if a session exists.
unified_session_manager()
Constructs a unified session manager with default configuration.
auto remove_session(const std::string &session_id) -> bool
Remove session by ID.
auto for_each(const std::function< void(session_handle &)> &callback) -> void
Execute a callback for each session.
~unified_session_manager()
auto add_session_with_id(std::shared_ptr< SessionType > session, const std::string &session_id="") -> std::string
Add a session and return the assigned ID.
unified_session_manager(unified_session_manager &&)=delete
unified_session_manager(const unified_session_manager &)=delete
auto get_total_rejected() const -> uint64_t
Get total rejected connections.
auto add_session_impl(session_handle handle, const std::string &session_id) -> bool
auto get_session(const std::string &session_id) -> session_handle *
Get session handle by ID (non-owning reference)
std::unique_ptr< impl > impl_
auto can_accept_connection() const -> bool
Check if new connection can be accepted.
auto get_session_count() const -> size_t
Get current session count.
auto get_config() const -> const unified_session_config &
Get current configuration.
static auto generate_id(const std::string &prefix="session_") -> std::string
Generate a unique session ID.
auto clear_all_sessions() -> void
Clear all sessions.
Configuration for unified session management.
double backpressure_threshold
std::chrono::milliseconds cleanup_interval
std::chrono::milliseconds idle_timeout
Comprehensive session manager statistics.
uint64_t total_cleaned_up
std::chrono::milliseconds idle_timeout