Open Lighting Architecture  0.9.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
ola::http::HTTPServer Class Reference

Detailed Description

The base HTTP Server.

This is a simple HTTP Server built around libmicrohttpd. It runs in a separate thread.

Example
HTTPServer::HTTPServerOptions options;
options.port = ...;
HTTPServer server(options);
server.Init();
server.Run();
// get on with life and later...
server.Stop();
Inheritance diagram for ola::http::HTTPServer:
ola::thread::Thread

Classes

struct  Descriptor_lt
struct  DescriptorState
struct  HTTPServerOptions
struct  static_file_info

Public Types

typedef ola::Callback2< int,
const HTTPRequest
*, HTTPResponse * > 
BaseHTTPCallback

Public Member Functions

 HTTPServer (const HTTPServerOptions &options)
virtual ~HTTPServer ()
bool Init ()
void * Run ()
void Stop ()
void UpdateSockets ()
void HandleHTTPIO ()
int DispatchRequest (const HTTPRequest *request, HTTPResponse *response)
bool RegisterHandler (const std::string &path, BaseHTTPCallback *handler)
bool RegisterFile (const std::string &path, const std::string &content_type)
bool RegisterFile (const std::string &path, const std::string &file, const std::string &content_type)
void RegisterDefaultHandler (BaseHTTPCallback *handler)
void Handlers (std::vector< std::string > *handlers) const
const std::string DataDir () const
int ServeError (HTTPResponse *response, const std::string &details="")
int ServeNotFound (HTTPResponse *response)
int ServeStaticContent (const std::string &path, const std::string &content_type, HTTPResponse *response)
ola::io::SelectServerSelectServer ()
- Public Member Functions inherited from ola::thread::Thread
virtual bool Start ()
virtual bool FastStart ()
virtual bool Join (void *ptr=NULL)
bool IsRunning ()
ThreadId Id () const
void * _InternalRun ()

Static Public Member Functions

static int ServeRedirect (HTTPResponse *response, const std::string &location)
- Static Public Member Functions inherited from ola::thread::Thread
static ThreadId Self ()

Static Public Attributes

static const char CONTENT_TYPE_PLAIN [] = "text/plain"
static const char CONTENT_TYPE_HTML [] = "text/html"
static const char CONTENT_TYPE_GIF [] = "image/gif"
static const char CONTENT_TYPE_PNG [] = "image/png"
static const char CONTENT_TYPE_CSS [] = "text/css"
static const char CONTENT_TYPE_JS [] = "text/javascript"

Constructor & Destructor Documentation

ola::http::HTTPServer::HTTPServer ( const HTTPServerOptions options)
explicit

Setup the HTTP server.

Parameters
optionsthe configuration options for the server
ola::http::HTTPServer::~HTTPServer ( )
virtual

Destroy this object

Member Function Documentation

int ola::http::HTTPServer::DispatchRequest ( const HTTPRequest request,
HTTPResponse response 
)

Call the appropriate handler.

void ola::http::HTTPServer::HandleHTTPIO ( )
inline

Called when there is HTTP IO activity to deal with. This is a noop as MHD_run is called in UpdateSockets above.

void ola::http::HTTPServer::Handlers ( std::vector< std::string > *  handlers) const

Return a list of all handlers registered

bool ola::http::HTTPServer::Init ( )

Setup the HTTP server

Returns
true on success, false on failure
void ola::http::HTTPServer::RegisterDefaultHandler ( BaseHTTPCallback handler)

Set the default handler.

Parameters
handlerthe default handler to call. This will be freed when the HTTPServer is destroyed.
bool ola::http::HTTPServer::RegisterFile ( const std::string &  path,
const std::string &  content_type 
)

Register a static file. The root of the URL corresponds to the data dir.

Parameters
paththe URL path for the file e.g. '/foo.png'
content_typethe content type.
bool ola::http::HTTPServer::RegisterFile ( const std::string &  path,
const std::string &  file,
const std::string &  content_type 
)

Register a static file

Parameters
paththe path to serve on e.g. /foo.png
filethe path to the file to serve relative to the data dir e.g. images/foo.png
content_typethe content type.
bool ola::http::HTTPServer::RegisterHandler ( const std::string &  path,
BaseHTTPCallback handler 
)

Register a handler

Parameters
paththe url to respond on
handlerthe Closure to call for this request. These will be freed once the HTTPServer is destroyed.
void * ola::http::HTTPServer::Run ( )
virtual

The entry point into the new thread

Implements ola::thread::Thread.

int ola::http::HTTPServer::ServeError ( HTTPResponse response,
const std::string &  details = "" 
)

Serve an error.

Parameters
responsethe reponse to use.
detailsthe error description
int ola::http::HTTPServer::ServeNotFound ( HTTPResponse response)

Serve a 404

Parameters
responsethe response to use
int ola::http::HTTPServer::ServeRedirect ( HTTPResponse response,
const std::string &  location 
)
static

Serve a redirect

Parameters
responsethe response to use
locationthe location to redirect to
int ola::http::HTTPServer::ServeStaticContent ( const std::string &  path,
const std::string &  content_type,
HTTPResponse response 
)

Return the contents of a file

void ola::http::HTTPServer::Stop ( )

Stop the HTTP server

void ola::http::HTTPServer::UpdateSockets ( )

This is run every loop iteration to update the list of sockets in the SelectServer from MHD.


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