Malloy
Toggle main menu visibility
Loading...
Searching...
No Matches
lib
malloy
core
http
session
manager.hpp
1
#pragma once
2
3
#include "types.hpp"
4
#include "../response.hpp"
5
#include "../request.hpp"
6
7
#include <chrono>
8
#include <memory>
9
#include <mutex>
10
#include <optional>
11
#include <string>
12
13
namespace
malloy::http::sessions
14
{
15
struct
storage
;
16
struct
session
;
17
18
class
manager
19
{
20
public
:
24
constexpr
static
const
char
*
cookie_name
=
"sessionId"
;
25
33
explicit
34
manager
(std::shared_ptr<storage>
storage
);
35
41
manager
(
const
manager
& other) =
delete
;
42
48
manager
(
manager
&& other)
noexcept
=
delete
;
49
53
virtual
54
~manager
() =
default
;
55
62
manager
&
63
operator=
(
const
manager
& rhs) =
delete
;
64
71
manager
&
72
operator=
(
manager
&& rhs)
noexcept
=
delete
;
73
82
[[nodiscard]]
83
std::shared_ptr<session>
84
get
(
const
request_header<>
& hdr);
85
94
[[nodiscard]]
95
std::shared_ptr<session>
96
get
(
const
request<>
& req)
97
{
98
return
get
(req.base());
99
}
100
109
[[nodiscard]]
110
std::shared_ptr<session>
111
get
(
const
id_type&
id
);
112
123
[[nodiscard]]
124
std::shared_ptr<session>
125
start
(
const
request<>
& req,
response<>
& resp);
126
135
void
136
destroy
(
const
request<>
& req,
response<>
& resp);
137
144
std::size_t
145
destroy_expired
(
const
std::chrono::seconds& max_lifetime);
146
153
[[nodiscard]]
154
bool
155
is_valid
(
const
request<>
& req)
156
{
157
return
is_valid
(req.base());
158
}
159
166
[[nodiscard]]
167
bool
168
is_valid
(
const
malloy::http::request_header<>
& hdr);
169
176
[[nodiscard]]
177
bool
178
is_valid
(
const
id_type&
id
);
179
180
private
:
181
std::shared_ptr<storage> m_storage;
182
std::mutex m_lock;
// protects sessions
183
190
[[nodiscard]]
191
std::optional<id_type>
192
get_id(
const
request_header<>
& hdr)
const
;
193
197
[[nodiscard]]
198
static
199
id_type
200
generate_id();
201
};
202
203
}
malloy::http::request
Definition
request.hpp:19
malloy::http::response
Definition
response.hpp:22
malloy::http::sessions::manager::operator=
manager & operator=(const manager &rhs)=delete
malloy::http::sessions::manager::~manager
virtual ~manager()=default
malloy::http::sessions::manager::manager
manager(manager &&other) noexcept=delete
malloy::http::sessions::manager::destroy
void destroy(const request<> &req, response<> &resp)
Definition
manager.cpp:82
malloy::http::sessions::manager::destroy_expired
std::size_t destroy_expired(const std::chrono::seconds &max_lifetime)
Definition
manager.cpp:104
malloy::http::sessions::manager::get
std::shared_ptr< session > get(const request<> &req)
Definition
manager.hpp:96
malloy::http::sessions::manager::is_valid
bool is_valid(const request<> &req)
Definition
manager.hpp:155
malloy::http::sessions::manager::manager
manager(const manager &other)=delete
malloy::http::sessions::manager::start
std::shared_ptr< session > start(const request<> &req, response<> &resp)
Definition
manager.cpp:46
malloy::http::sessions::manager::cookie_name
static constexpr const char * cookie_name
Definition
manager.hpp:24
malloy::http::sessions::manager::manager
manager(std::shared_ptr< storage > storage)
Definition
manager.cpp:12
malloy::http::sessions::manager::get
std::shared_ptr< session > get(const request_header<> &hdr)
Definition
manager.cpp:20
malloy::http::sessions::manager::operator=
manager & operator=(manager &&rhs) noexcept=delete
malloy::http::request_header
boost::beast::http::request_header< Fields > request_header
Definition
types.hpp:39
malloy::http::sessions::session
Definition
session.hpp:23
malloy::http::sessions::storage
Definition
storage.hpp:17
Generated by
1.18.0