#include <wpinet/HttpServerConnection.h>
|
virtual void | ProcessRequest ()=0 |
| Process an incoming HTTP request. More...
|
|
virtual void | BuildCommonHeaders (raw_ostream &os) |
| Build common response headers. More...
|
|
virtual void | BuildHeader (raw_ostream &os, int code, std::string_view codeText, std::string_view contentType, uint64_t contentLength, std::string_view extra={}) |
| Build HTTP response header, along with other header information like mimetype. More...
|
|
void | SendData (std::span< const uv::Buffer > bufs, bool closeAfter=false) |
| Send data to client. More...
|
|
virtual void | SendResponse (int code, std::string_view codeText, std::string_view contentType, std::string_view content, std::string_view extraHeader={}) |
| Send HTTP response, along with other header information like mimetype. More...
|
|
virtual void | SendStaticResponse (int code, std::string_view codeText, std::string_view contentType, std::string_view content, bool gzipped, std::string_view extraHeader={}) |
| Send HTTP response from static data, along with other header information like mimetype. More...
|
|
virtual void | SendError (int code, std::string_view message={}) |
| Send error header and message. More...
|
|
◆ HttpServerConnection()
wpi::HttpServerConnection::HttpServerConnection |
( |
std::shared_ptr< uv::Stream > |
stream | ) |
|
|
explicit |
◆ ~HttpServerConnection()
virtual wpi::HttpServerConnection::~HttpServerConnection |
( |
| ) |
|
|
virtualdefault |
◆ BuildCommonHeaders()
virtual void wpi::HttpServerConnection::BuildCommonHeaders |
( |
raw_ostream & |
os | ) |
|
|
protectedvirtual |
Build common response headers.
Called by SendHeader() to send headers common to every response. Each line must be terminated with "\r\n".
The default implementation sends the following: "Server: WebServer/1.0\r\n" "Cache-Control: no-store, no-cache, must-revalidate, pre-check=0, " "post-check=0, max-age=0\r\n" "Pragma: no-cache\r\n" "Expires: Mon, 3 Jan 2000 12:34:56 GMT\r\n"
These parameters should ensure the browser does not cache the response. A browser should connect for each file and not serve files from its cache.
- Parameters
-
◆ BuildHeader()
Build HTTP response header, along with other header information like mimetype.
Calls BuildCommonHeaders().
- Parameters
-
os | response stream |
code | HTTP response code (e.g. 200) |
codeText | HTTP response code text (e.g. "OK") |
contentType | MIME content type (e.g. "text/plain") |
contentLength | Length of content. If 0 is provided, m_keepAlive will be set to false. |
extra | Extra HTTP headers to send, including final "\r\n" |
◆ ProcessRequest()
virtual void wpi::HttpServerConnection::ProcessRequest |
( |
| ) |
|
|
protectedpure virtual |
Process an incoming HTTP request.
This is called after the incoming message completes (e.g. from the HttpParser::messageComplete callback).
The implementation should read request details from m_request and call the appropriate Send() functions to send a response back to the client.
◆ SendData()
void wpi::HttpServerConnection::SendData |
( |
std::span< const uv::Buffer > |
bufs, |
|
|
bool |
closeAfter = false |
|
) |
| |
|
protected |
Send data to client.
This is a convenience wrapper around m_stream.Write() to provide auto-close functionality.
- Parameters
-
bufs | Buffers to write. Deallocate() will be called on each buffer after the write completes. If different behavior is desired, call m_stream.Write() directly instead. |
closeAfter | close the connection after the write completes |
◆ SendError()
virtual void wpi::HttpServerConnection::SendError |
( |
int |
code, |
|
|
std::string_view |
message = {} |
|
) |
| |
|
protectedvirtual |
Send error header and message.
This provides standard code responses for 400, 401, 403, 404, 500, and 503. Other codes will be reported as 501. For arbitrary code handling, use SendResponse() instead.
- Parameters
-
code | HTTP error code (e.g. 404) |
message | Additional message text |
◆ SendResponse()
Send HTTP response, along with other header information like mimetype.
Calls BuildHeader().
- Parameters
-
code | HTTP response code (e.g. 200) |
codeText | HTTP response code text (e.g. "OK") |
contentType | MIME content type (e.g. "text/plain") |
content | Response message content |
extraHeader | Extra HTTP headers to send, including final "\r\n" |
◆ SendStaticResponse()
Send HTTP response from static data, along with other header information like mimetype.
Calls BuildHeader(). Supports gzip pre-compressed data (it will decompress if the client does not accept gzip encoded data). Unlike SendResponse(), content is not copied and its contents must remain valid for an unspecified lifetime.
- Parameters
-
code | HTTP response code (e.g. 200) |
codeText | HTTP response code text (e.g. "OK") |
contentType | MIME content type (e.g. "text/plain") |
content | Response message content |
gzipped | True if content is gzip compressed |
extraHeader | Extra HTTP headers to send, including final "\r\n" |
◆ m_acceptGzip
bool wpi::HttpServerConnection::m_acceptGzip = false |
|
protected |
If gzip is an acceptable encoding for responses.
◆ m_dataConn
The header reader connection.
◆ m_endConn
The end stream connection.
◆ m_keepAlive
bool wpi::HttpServerConnection::m_keepAlive = false |
|
protected |
Whether the connection should be kept alive.
◆ m_messageCompleteConn
The message complete connection.
◆ m_request
◆ m_stream
The underlying stream for the connection.
The documentation for this class was generated from the following file: