PL::HttpServer class

class HttpServer : public PL::NetworkServer

HTTP/HTTPS server class.

Public Functions

HttpServer(std::shared_ptr<Buffer> headerBuffer)

Creates an HTTP server with shared header buffer.

Parameters:

headerBuffer – header buffer

HttpServer(size_t headerBufferSize = defaultHeaderBufferSize)

Creates an HTTP server and allocate header buffer.

Parameters:

headerBufferSize – header buffer size

HttpServer(const char *certificate, const char *privateKey, std::shared_ptr<Buffer> headerBuffer)

Creates an HTTPS server with shared header buffer.

Parameters:
  • certificate – certificate

  • privateKey – private key

  • headerBuffer – header buffer

HttpServer(const char *certificate, const char *privateKey, size_t headerBufferSize = defaultHeaderBufferSize)

Creates an HTTPS server and allocate header buffer.

Parameters:
  • certificate – certificate

  • privateKey – private key

  • headerBufferSize – header buffer size

~HttpServer()

Note

Every derived class must call StopTask as the first statement of its own destructor so that the server task does not call HandleRequest on a partially destroyed object.

virtual esp_err_t Lock(TickType_t timeout = portMAX_DELAY) override

Locks the object.

Parameters:

timeout – timeout in FreeRTOS ticks

Returns:

error code

virtual esp_err_t Unlock() override

Unlocks the object.

Returns:

error code

virtual esp_err_t Enable() override

Note

The control socket (used to stop the httpd task) is bound to the same UDP port number as the server’s TCP port, so that port is also silently claimed on UDP.

virtual esp_err_t Disable() override

Disables the server.

Returns:

error code

virtual bool IsEnabled() override

Checks if the server is enabled.

Returns:

true if the server is enabled

virtual uint16_t GetPort() override

Gets listening port.

Returns:

port

virtual esp_err_t SetPort(uint16_t port) override

Sets listening port.

Parameters:

port – port

Returns:

error code

virtual size_t GetMaxNumberOfClients() override

Gets the maximum number of server clients.

Returns:

number of clients

virtual esp_err_t SetMaxNumberOfClients(size_t maxNumberOfClients) override

Sets the maximum number of server clients.

Parameters:

maxNumberOfClients – number of clients

Returns:

error code

TickType_t GetReadTimeout()

Gets the read operation timeout.

Returns:

timeout in FreeRTOS ticks

esp_err_t SetReadTimeout(TickType_t timeout)

Sets the read operation timeout.

Parameters:

timeout – timeout in FreeRTOS ticks

Returns:

error code

TickType_t GetWriteTimeout()

Gets the write operation timeout.

Returns:

timeout in FreeRTOS ticks

esp_err_t SetWriteTimeout(TickType_t timeout)

Sets the write operation timeout.

Parameters:

timeout – timeout in FreeRTOS ticks

Returns:

error code

esp_err_t SetTaskParameters(const TaskParameters &taskParameters)

Sets the server task parameters.

Parameters:

taskParameters – task parameters

Returns:

error code

std::string GetName()

Gets the server name.

Returns:

name

void SetName(const std::string &name)

Sets the server name.

Parameters:

name – name

Public Members

Event<Server> enabledEvent

server enabled event

Event<Server> disabledEvent

server disabled event

Public Static Attributes

static const std::string defaultHttpName

Default HTTP server name.

static const std::string defaultHttpsName

Default HTTPS server name.

static constexpr uint16_t defaultHttpPort = 80

Default HTTP port.

static constexpr uint16_t defaultHttpsPort = 443

Default HTTPS port.

static constexpr size_t defaultMaxNumberOfClients = 1

Default maximum number of server clients.

static constexpr TickType_t defaultReadTimeout = 5000 / portTICK_PERIOD_MS

Default read operation timeout in FreeRTOS ticks.

static constexpr TickType_t defaultWriteTimeout = 5000 / portTICK_PERIOD_MS

Default write operation timeout in FreeRTOS ticks.

static const TaskParameters defaultTaskParameters

Default server task parameters.

static constexpr size_t defaultHeaderBufferSize = 1024

Default header buffer size.

Protected Functions

esp_err_t StopTask()

Stops the server and waits for its task to exit.

Note

Must be called as the first statement of the destructor of every derived class so that the server task does not call HandleRequest on a partially destroyed object.

Returns:

error code

virtual esp_err_t HandleRequest(HttpServerTransaction &transaction) = 0

Handles the HTTP request.

Note

Enable, Disable and the configuration setters may be called from here; the actual restart is deferred to a separate task and runs after the response is sent.

Parameters:

transaction – transaction

Returns:

error code