#pragma once // qt #include #include // #include // orpheus #include "iprotocol.h" class ICamera; class QHttpServer; class HttpServer : public ProtocolBase { // Q_OBJECT private: struct Stats { uint64_t GET_pixels_us{0}; } m_stats{0}; public: static constexpr auto DefaultAddress = QHostAddress::Any; static constexpr uint16_t DefaultPort{8080}; public: explicit HttpServer(ICamera *camera, // QObject *parent = nullptr, const QHostAddress &address = DefaultAddress, const uint16_t port = DefaultPort); ~HttpServer() override = default; // TODO: methods starting with GET_/POST_ will be routed automatically public: QHttpServerResponse GET_pixels(); QHttpServerResponse POST_params(const QHttpServerRequest &request); QHttpServerResponse GET_params(); private: QHostAddress m_address{DefaultAddress}; uint16_t m_port{DefaultPort}; std::shared_ptr m_server; };