// SPDX-FileCopyrightText: 2023 Yury Gubich // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #include #include #include #include #include #include "stream/ostream.h" class Request { public: enum class State { initial, accepted, responded }; Request(); ~Request(); Request(const Request& other) = delete; Request(Request&& other) = delete; Request& operator = (const Request& other) = delete; Request& operator = (Request&& other) = delete; bool wait(int socketDescriptor); void terminate(); bool isGet() const; OStream getOutputStream(); OStream getErrorStream(); std::string getPath(const std::string& serverName) const; std::string getServerName() const; void printEnvironment(std::ostream& out); void printEnvironment(nlohmann::json& out); private: State state; FCGX_Request raw; };