diff options
Diffstat (limited to 'src/protocols/httpserver.h')
| -rw-r--r-- | src/protocols/httpserver.h | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/protocols/httpserver.h b/src/protocols/httpserver.h new file mode 100644 index 0000000..86b6ad6 --- /dev/null +++ b/src/protocols/httpserver.h @@ -0,0 +1,47 @@ +#pragma once + +// qt +#include <QHostAddress> +#include <QHttpServerResponse> +// #include <QObject> + +// 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<QHttpServer> m_server; +}; |
