#ifndef MICROHTTPD_SERVER_P_H #define MICROHTTPD_SERVER_P_H #include "pihttptypes.h" #include "piobject.h" #include "pip_http_server_export.h" struct MicrohttpdServerConnection; class PIP_HTTP_SERVER_EXPORT MicrohttpdServer: public PIObject { PIOBJECT(MicrohttpdServer) friend struct MicrohttpdServerConnection; public: MicrohttpdServer(); virtual ~MicrohttpdServer(); enum class Option { ConnectionLimit, // uint ConnectionTimeout, // uint, sec HTTPSEnabled, // bool HTTPSMemKey, // const char * to key.pem data HTTPSMemCert, // const char * to cert.pem data HTTPSKeyPassword // const char * to passwd for key.pem }; void setOption(Option o, PIVariant v); void setFavicon(const PIByteArray & im); bool listen(PINetworkAddress addr); bool listenAll(ushort port) { return listen({0, port}); } bool isListen() const; void stop(); void setRequestCallback(std::function c) { callback = c; } private: static void addFixedHeaders(PIHTTP::MessageMutable & msg); PRIVATE_DECLARATION(PIP_HTTP_SERVER_EXPORT) PIByteArray favicon; PIMap opts; std::function callback; PIByteArray mem_key, mem_cert, key_pass; }; #endif