X Tutup
#ifndef SRC_HTTPSERVER_HPP_ #define SRC_HTTPSERVER_HPP_ // Standard library #include // Arduino stuff #include // Required for sockets #include "lwip/netdb.h" #undef read #include "lwip/sockets.h" #include "lwip/inet.h" // Internal includes #include "HTTPSServerConstants.hpp" #include "HTTPHeaders.hpp" #include "HTTPHeader.hpp" #include "ResourceNode.hpp" #include "ResourceResolver.hpp" #include "ResolvedResource.hpp" #include "HTTPConnection.hpp" namespace httpsserver { /** * \brief Main implementation for the plain HTTP server. Use HTTPSServer for TLS support */ class HTTPServer : public ResourceResolver { public: HTTPServer(const uint16_t portHTTPS = 80, const uint8_t maxConnections = 8, const in_addr_t bindAddress = 0); virtual ~HTTPServer(); uint8_t start(); void stop(); bool isRunning(); void loop(); void setDefaultHeader(std::string name, std::string value); protected: // Static configuration. Port, keys, etc. ==================== // Certificate that should be used (includes private key) const uint16_t _port; // Max parallel connections that the server will accept const uint8_t _maxConnections; // Address to bind to (0 = all interfaces) const in_addr_t _bindAddress; //// Runtime data ============================================ // The array of connections that are currently active HTTPConnection ** _connections; // Status of the server: Are we running, or not? boolean _running; // The server socket int _socket; // The server socket address, that our service is bound to sockaddr_in _sock_addr; // Headers that are included in every response HTTPHeaders _defaultHeaders; // Setup functions virtual uint8_t setupSocket(); virtual void teardownSocket(); // Helper functions virtual int createConnection(int idx); }; } #endif /* SRC_HTTPSERVER_HPP_ */
X Tutup