// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #ifndef MINIHTTPSERVER_H #define MINIHTTPSERVER_H #include #include #include class QFile; class QSemaphore; class QTcpServer; class QTcpSocket; class MiniHttpServer : public QThread { Q_OBJECT public: explicit MiniHttpServer(QObject *parent = nullptr); ~MiniHttpServer(); int port() { return portnum; } protected: void run(); private slots: void handleConnection(); private: QTcpServer *server; QObject *quitObject; QSemaphore *readyToGo; int portnum; }; class MiniHttpServerConnection: public QObject { Q_OBJECT QTcpSocket * const socket; QFile source; QTimer timeout; QByteArray buffer; bool connectionClose; public: explicit MiniHttpServerConnection(QTcpSocket *socket); void sendError500(); void sendError404(); void handlePendingRequest(); public slots: void handleReadyRead(); void handleBytesWritten(); void handleDisconnected(); void handleTimeout(); }; #endif // MINIHTTPSERVER_H