26#ifndef ROUTER_SRC_REST_MRS_SRC_MRS_REST_SESSION_MANAGER_H_
27#define ROUTER_SRC_REST_MRS_SRC_MRS_REST_SESSION_MANAGER_H_
82 const std::string &holder_name);
84 template <
typename Derived>
88 return dynamic_cast<Derived *
>(
data_.get());
93 data_->internal_session =
this;
96 void set_data(std::unique_ptr<SessionData> &&data) {
97 data_ = std::move(data);
98 data_->internal_session =
this;
153 const std::string &holder_name);
156 template <
class Generator>
158 std::lock_guard<std::mutex> lck{
mutex_};
Definition: session_manager.h:56
minutes expire_timeout
Definition: session_manager.h:58
std::optional< minutes > inactivity_timeout
Definition: session_manager.h:59
Definition: session_manager.h:66
Session * internal_session
Definition: session_manager.h:69
virtual ~SessionData()=default
Definition: session_manager.h:64
std::unique_ptr< SessionData > data_
Definition: session_manager.h:135
bool generate_token
Definition: session_manager.h:124
Derived * get_data() const
Definition: session_manager.h:85
system_clock::time_point get_create_time() const
Definition: session_manager.h:110
system_clock::time_point update_access_time()
Definition: session_manager.h:112
AuthorizationHandlerId get_authorization_handler_id() const
Definition: session_manager.h:101
std::string users_on_complete_timeout
Definition: session_manager.h:127
system_clock::time_point create_time_
Definition: session_manager.h:138
std::string host
Definition: session_manager.h:132
const std::string & get_holder_name() const
Definition: session_manager.h:107
State
Definition: session_manager.h:72
@ kUserVerified
Definition: session_manager.h:77
@ kWaitingForCode
Definition: session_manager.h:74
@ kUninitialized
Definition: session_manager.h:73
@ kTokenVerified
Definition: session_manager.h:76
@ kGettingTokken
Definition: session_manager.h:75
system_clock::time_point access_time_
Definition: session_manager.h:137
bool is_expired(system_clock::duration timeout) const
Definition: session_manager.h:120
State state
Definition: session_manager.h:125
std::string holder_name_
Definition: session_manager.h:140
SessionId id_
Definition: session_manager.h:136
const SessionId & get_session_id() const
Definition: session_manager.h:105
void set_data(SessionData *data)
Definition: session_manager.h:91
Session(const SessionId id, const AuthorizationHandlerId &authorization, const std::string &holder_name)
Definition: session_manager.cc:43
void set_data(std::unique_ptr< SessionData > &&data)
Definition: session_manager.h:96
bool has_access_timeout(system_clock::duration timeout) const
Definition: session_manager.h:116
AuthorizationHandlerId authorization_handler_id_
Definition: session_manager.h:139
std::string handler_secondary_id
Definition: session_manager.h:129
AuthUser user
Definition: session_manager.h:130
std::optional< std::string > users_on_complete_url_redirection
Definition: session_manager.h:126
system_clock::time_point get_access_time() const
Definition: session_manager.h:109
std::string handler_name
Definition: session_manager.h:128
std::string proto
Definition: session_manager.h:131
Definition: session_manager.h:48
system_clock::time_point oldest_session_
Definition: session_manager.h:187
std::chrono::system_clock system_clock
Definition: session_manager.h:52
std::string SessionId
Definition: session_manager.h:51
system_clock::time_point oldest_inactive_session_
Definition: session_manager.h:186
Allocation
Definition: session_manager.h:62
@ OnlyExisting
Definition: session_manager.h:62
@ CreateWhenNotExisting
Definition: session_manager.h:62
std::chrono::minutes minutes
Definition: session_manager.h:54
SessionPtr get_session_handler_specific_id_impl(const SessionId &id)
Definition: session_manager.cc:138
std::shared_ptr< Session > SessionPtr
Definition: session_manager.h:143
bool remove_session_impl(const Session *session)
Definition: session_manager.cc:124
void remove_timeouted()
Definition: session_manager.cc:110
void remove_expired_impl(const system_clock::time_point &now)
Definition: session_manager.cc:202
SessionManager()
Definition: session_manager.cc:52
void remove_session(const Session::SessionData *session_data)
Definition: session_manager.cc:115
SessionPtr new_session(const AuthorizationHandlerId id, const std::string &holder_name)
Definition: session_manager.cc:61
mrs::database::entry::UniversalId AuthorizationHandlerId
Definition: session_manager.h:53
std::mutex mutex_
Definition: session_manager.h:185
SessionPtr get_session_secondary_id(const SessionId &id)
Definition: session_manager.cc:77
void remove_timeouted_impl()
Definition: session_manager.cc:172
SessionPtr get_session_impl(const SessionId &id)
Definition: session_manager.cc:151
void set_unique_session_secondary_id(Session *session, const Generator &g)
Definition: session_manager.h:157
void remove_inactive_impl(const system_clock::time_point &now)
Definition: session_manager.cc:180
void configure(const Configuration &config)
Definition: session_manager.cc:56
mrs::database::entry::AuthUser AuthUser
Definition: session_manager.h:50
Configuration config_
Definition: session_manager.h:188
std::vector< SessionPtr > sessions_
Definition: session_manager.h:184
SessionId generate_session_id_impl()
Definition: session_manager.cc:163
SessionPtr get_session(const SessionId &id)
Definition: session_manager.cc:84
Definition: connection.h:55
static bool timeout(bool(*wait_condition)())
Timeout function.
Definition: log0meb.cc:498
std::chrono::minutes minutes
Definition: authorize_manager.cc:70
mrs::database::entry::AuthUser AuthUser
Definition: scram_handler.cc:54
ValueType value(const std::optional< ValueType > &v)
Definition: gtid.h:83
SessionManager::SessionPtr SessionPtr
Definition: session_manager.cc:41
Definition: authorize_manager.h:48
const uint64_t k_maximum_expire_timeout
Definition: session_manager.h:42
const uint64_t k_maximum_inactivity_timeout
Definition: session_manager.h:43
const uint64_t k_defulat_expire_timeout
Definition: session_manager.h:44
mrs::database::entry::UniversalId UniversalId
Definition: universal_id.h:33
unsigned long id[MAX_DEAD]
Definition: xcom_base.cc:510