// SPDX-FileCopyrightText: 2023 Yury Gubich // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include "request/request.h" #include "response/response.h" #include "router.h" #include "session.h" #include "database/dbinterface.h" #include "utils/helpers.h" #include "config.h" class Server { public: Server(); ~Server(); void run(int socketDescriptor); unsigned int registerAccount(const std::string& login, const std::string& password); bool validatePassword(const std::string& login, const std::string& password); Session& openSession(const std::string& login); private: void handleRequest(std::unique_ptr request); static std::string generateRandomString(std::size_t length); private: using Sessions = std::map>; bool terminating; uint64_t requestCount; std::optional serverName; Router router; std::unique_ptr db; Sessions sessions; };