Decentralised Art Server
High-performance C++ backend that exposes HTML interface and a secure REST API for managing Performative Transactions entities
 
Loading...
Searching...
No Matches
session_manager.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <string>
4#include <optional>
5
6
7#include "native.h"
8#include <asio.hpp>
9
10#include <spdlog/spdlog.h>
11#include <absl/container/flat_hash_map.h>
12
13namespace dcn
14{
15 using SessionID = std::string;
16 using UserID = std::string;
17
19 {
20 public:
21 SessionManager(asio::io_context & io_context);
22
23 virtual ~SessionManager() = default;
24
25 asio::awaitable<std::optional<SessionID>> createSession(const std::string& user_id);
26 asio::awaitable<std::optional<UserID>> validateSession(const std::string& session_id);
27 asio::awaitable<bool> destroySession(const SessionID & session_id);
28
29 protected:
30 std::optional<SessionID> generateSessionId();
31
32 private:
33 asio::strand<asio::io_context::executor_type> _strand;
34 absl::flat_hash_map<SessionID, UserID> _sessions;
35 };
36}
Definition session_manager.hpp:19
virtual ~SessionManager()=default
asio::awaitable< std::optional< SessionID > > createSession(const std::string &user_id)
Definition session_manager.cpp:34
asio::awaitable< std::optional< UserID > > validateSession(const std::string &session_id)
Definition session_manager.cpp:48
asio::awaitable< bool > destroySession(const SessionID &session_id)
Definition session_manager.cpp:59
std::optional< SessionID > generateSessionId()
Definition session_manager.cpp:14
Definition decentralised_art.hpp:30
std::string SessionID
Definition session_manager.hpp:15
std::string UserID
Definition session_manager.hpp:16