#pragma once #include "webserverlib_global.h" #include #include #include #include "httpresponse.h" #include "httprequest.h" class QTcpSocket; class QFileDevice; class WebListener; class WEBSERVERLIB_EXPORT HttpClientConnection : public QObject { Q_OBJECT static const int m_bufferSize; public: explicit HttpClientConnection(QTcpSocket &socket, WebListener &webListener); void sendResponse(const HttpResponse &response); void sendResponse(HttpResponse response, const QByteArray &byteArray); void sendResponse(HttpResponse response, const QString &string); void sendResponse(HttpResponse response, std::unique_ptr &&device); void sendResponse(HttpResponse response, std::unique_ptr &&device); private Q_SLOTS: void readyRead(); void bytesWritten(); private: void clearRequest(); QTcpSocket &m_socket; WebListener &m_webListener; QByteArray m_buffer; enum { RequestLine, Headers, RequestBody, WaitingForResponse, SendingResponse } m_state; int m_bodyLength; HttpRequest m_request; std::unique_ptr m_sendingDeivce; };