WPILibC++  2018.4.1-20180925013224-1203-g32ec07e
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
wpi::HttpServerConnection Class Referenceabstract

Public Member Functions

 HttpServerConnection (std::shared_ptr< uv::Stream > stream)
 

Protected Member Functions

virtual void ProcessRequest ()=0
 Process an incoming HTTP request. More...
 
virtual void BuildCommonHeaders (raw_ostream &os)
 Build common response headers. More...
 
void BuildHeader (raw_ostream &os, int code, const Twine &codeText, const Twine &contentType, uint64_t contentLength, const Twine &extra=Twine{})
 Build HTTP response header, along with other header information like mimetype. More...
 
void SendData (ArrayRef< uv::Buffer > bufs, bool closeAfter=false)
 Send data to client. More...
 
void SendResponse (int code, const Twine &codeText, const Twine &contentType, StringRef content, const Twine &extraHeader=Twine{})
 Send HTTP response, along with other header information like mimetype. More...
 
void SendError (int code, const Twine &message=Twine{})
 Send error header and message. More...
 

Protected Attributes

HttpParser m_request {HttpParser::kRequest}
 The HTTP request. More...
 
bool m_keepAlive = false
 Whether the connection should be kept alive. More...
 
uv::Streamm_stream
 The underlying stream for the connection. More...
 

Member Function Documentation

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
.

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
osresponse stream
void wpi::HttpServerConnection::BuildHeader ( raw_ostream os,
int  code,
const Twine codeText,
const Twine contentType,
uint64_t  contentLength,
const Twine extra = Twine{} 
)
protected

Build HTTP response header, along with other header information like mimetype.

Calls BuildCommonHeaders().

Parameters
osresponse stream
codeHTTP response code (e.g. 200)
codeTextHTTP response code text (e.g. "OK")
contentTypeMIME content type (e.g. "text/plain")
contentLengthLength of content. If 0 is provided, m_keepAlive will be set to false.
extraExtra HTTP headers to send, not including final "\r\n"
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.

void wpi::HttpServerConnection::SendData ( ArrayRef< 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
bufsBuffers to write. Deallocate() will be called on each buffer after the write completes. If different behavior is desired, call m_stream.Write() directly instead.
closeAfterclose the connection after the write completes
void wpi::HttpServerConnection::SendError ( int  code,
const Twine message = Twine{} 
)
protected

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
codeHTTP error code (e.g. 404)
messageAdditional message text
void wpi::HttpServerConnection::SendResponse ( int  code,
const Twine codeText,
const Twine contentType,
StringRef  content,
const Twine extraHeader = Twine{} 
)
protected

Send HTTP response, along with other header information like mimetype.

Calls BuildHeader().

Parameters
codeHTTP response code (e.g. 200)
codeTextHTTP response code text (e.g. "OK")
contentTypeMIME content type (e.g. "text/plain")
contentResponse message content
extraHeaderExtra HTTP headers to send, not including final "\r\n"

Member Data Documentation

bool wpi::HttpServerConnection::m_keepAlive = false
protected

Whether the connection should be kept alive.

HttpParser wpi::HttpServerConnection::m_request {HttpParser::kRequest}
protected

The HTTP request.

uv::Stream& wpi::HttpServerConnection::m_stream
protected

The underlying stream for the connection.


The documentation for this class was generated from the following file: