#ifndef SRC_HTTPSCONNECTION_HPP_ #define SRC_HTTPSCONNECTION_HPP_ #include #include // Required for SSL #include "openssl/ssl.h" #undef read // Required for sockets #include "lwip/netdb.h" #undef read #include "lwip/sockets.h" #include "HTTPSServerConstants.hpp" #include "HTTPConnection.hpp" #include "HTTPHeaders.hpp" #include "HTTPHeader.hpp" #include "ResourceResolver.hpp" #include "ResolvedResource.hpp" #include "ResourceNode.hpp" #include "HTTPRequest.hpp" #include "HTTPResponse.hpp" namespace httpsserver { /** * \brief Connection class for an open TLS-enabled connection to an HTTPSServer */ class HTTPSConnection : public HTTPConnection { public: HTTPSConnection(ResourceResolver * resResolver); virtual ~HTTPSConnection(); virtual int initialize(int serverSocketID, SSL_CTX * sslCtx, HTTPHeaders *defaultHeaders); virtual void closeConnection(); virtual bool isSecure(); protected: friend class HTTPRequest; friend class HTTPResponse; virtual size_t readBytesToBuffer(byte* buffer, size_t length); virtual size_t pendingByteCount(); virtual bool canReadData(); virtual size_t writeBuffer(byte* buffer, size_t length); private: // SSL context for this connection SSL * _ssl; }; } /* namespace httpsserver */ #endif /* SRC_HTTPSCONNECTION_HPP_ */