#pragma once #include "ServerProtocol.h" #include "../../transfer/HttpStatusCode.h" namespace HttpServer { class ServerHttp1 : public ServerProtocol { private: const ServerApplicationSettings *getApplicationSettings(struct Request &rp, const bool isSecureConnection) const; Http::StatusCode getRequestData(struct Request &rp, std::string &str_buf, const ServerApplicationSettings &appSets) const; protected: void useHttp1Protocol(struct Request &rp, std::vector &buf, std::string &str_buf) const; public: ServerHttp1(Socket::Adapter &sock, const ServerSettings &settings, ServerControls &controls) noexcept; virtual bool sendHeaders(const Http::StatusCode status, std::vector > &headers, const std::chrono::milliseconds &timeout, const bool endStream) const override; virtual long sendData(const void *src, size_t size, const std::chrono::milliseconds &timeout, DataTransfer *dt) const override; virtual bool packRequestParameters(std::vector &buf, const struct Request &rp, const std::string &rootDir) const override; virtual void unpackResponseParameters(struct Request &req, const void *src) const override; virtual ServerProtocol *process() override; virtual void close() override; }; };