Fawkes API Fawkes Development Version
fawkes::WebRequestDispatcher Class Reference

Web request dispatcher. More...

#include "request_dispatcher.h"

Public Member Functions

 WebRequestDispatcher (WebUrlManager *url_manager, WebPageHeaderGenerator *headergen=0, WebPageFooterGenerator *footergen=0)
 Constructor. More...
 
 ~WebRequestDispatcher ()
 Destructor. More...
 
void setup_basic_auth (const char *realm, WebUserVerifier *verifier)
 Setup basic authentication. More...
 
void setup_access_log (const char *filename)
 Setup access log. More...
 
void setup_cors (bool allow_all, std::vector< std::string > &&origins, unsigned int max_age)
 Setup cross-origin resource sharing. More...
 
unsigned int active_requests () const
 Get number of active requests. More...
 
Time last_request_completion_time () const
 Get time when last request was completed. More...
 

Static Public Member Functions

static MHD_RESULT process_request_cb (void *callback_data, struct MHD_Connection *connection, const char *url, const char *method, const char *version, const char *upload_data, size_t *upload_data_size, void **session_data)
 Process request callback for libmicrohttpd. More...
 
static void request_completed_cb (void *cls, struct MHD_Connection *connection, void **con_cls, enum MHD_RequestTerminationCode toe)
 Process request completion. More...
 
static void * uri_log_cb (void *cls, const char *uri)
 Callback for new requests. More...
 

Detailed Description

Web request dispatcher.

Takes web request received via a webserver run by libmicrohttpd and dispatches pages to registered URL handlers or gives a 404 error if no handler was registered for the given url.

Author
Tim Niemueller

Definition at line 48 of file request_dispatcher.h.

Constructor & Destructor Documentation

◆ WebRequestDispatcher()

fawkes::WebRequestDispatcher::WebRequestDispatcher ( WebUrlManager url_manager,
WebPageHeaderGenerator headergen = 0,
WebPageFooterGenerator footergen = 0 
)

Constructor.

Parameters
url_managerURL manager to use for URL to processor mapping
headergenpage header generator
footergenpage footer generator

Definition at line 66 of file request_dispatcher.cpp.

◆ ~WebRequestDispatcher()

fawkes::WebRequestDispatcher::~WebRequestDispatcher ( )

Destructor.

Definition at line 84 of file request_dispatcher.cpp.

Member Function Documentation

◆ active_requests()

unsigned int fawkes::WebRequestDispatcher::active_requests ( ) const

Get number of active requests.

Returns
number of ongoing requests.

Definition at line 553 of file request_dispatcher.cpp.

Referenced by fawkes::WebServer::active_requests().

◆ last_request_completion_time()

Time fawkes::WebRequestDispatcher::last_request_completion_time ( ) const

Get time when last request was completed.

Returns
Time when last request was completed

Definition at line 563 of file request_dispatcher.cpp.

Referenced by fawkes::WebServer::last_request_completion_time().

◆ process_request_cb()

MHD_RESULT fawkes::WebRequestDispatcher::process_request_cb ( void *  callback_data,
struct MHD_Connection *  connection,
const char *  url,
const char *  method,
const char *  version,
const char *  upload_data,
size_t *  upload_data_size,
void **  session_data 
)
static

Process request callback for libmicrohttpd.

Parameters
callback_datainstance of WebRequestDispatcher to call
connectionlibmicrohttpd connection instance
urlURL, may contain escape sequences
methodHTTP method
versionHTTP version
upload_datauploaded data
upload_data_sizesize of upload_data parameter
session_datasession data pointer
Returns
appropriate return code for libmicrohttpd

Definition at line 167 of file request_dispatcher.cpp.

Referenced by fawkes::WebServer::start().

◆ request_completed_cb()

void fawkes::WebRequestDispatcher::request_completed_cb ( void *  cls,
struct MHD_Connection *  connection,
void **  con_cls,
enum MHD_RequestTerminationCode  toe 
)
static

Process request completion.

Parameters
clsclosure which is a pointer to the request dispatcher
connectionconnection on which the request completed
con_clsconnection specific data, for us the request
toetermination code

Definition at line 188 of file request_dispatcher.cpp.

Referenced by fawkes::WebServer::start().

◆ setup_access_log()

void fawkes::WebRequestDispatcher::setup_access_log ( const char *  filename)

Setup access log.

Parameters
filenameaccess log file name

Definition at line 121 of file request_dispatcher.cpp.

Referenced by fawkes::WebServer::setup_access_log().

◆ setup_basic_auth()

void fawkes::WebRequestDispatcher::setup_basic_auth ( const char *  realm,
WebUserVerifier verifier 
)

Setup basic authentication.

Parameters
realmauthentication realm to display to the user. If NULL basic authentication will be disabled.
verifierverifier to use for checking credentials. If NULL basic authentication will be disabled.

Definition at line 100 of file request_dispatcher.cpp.

Referenced by fawkes::WebServer::setup_basic_auth().

◆ setup_cors()

void fawkes::WebRequestDispatcher::setup_cors ( bool  allow_all,
std::vector< std::string > &&  origins,
unsigned int  max_age 
)

Setup cross-origin resource sharing.

Parameters
allow_allallow access to all hosts
originsallow access from these specific origins
max_agemaximum cache time to send to the client, zero to disable

Definition at line 134 of file request_dispatcher.cpp.

Referenced by fawkes::WebServer::start().

◆ uri_log_cb()

void * fawkes::WebRequestDispatcher::uri_log_cb ( void *  cls,
const char *  uri 
)
static

Callback for new requests.

Parameters
clsclosure, must be WebRequestDispatcher
urirequested URI
Returns
returns output of WebRequestDispatcher::log_uri()

Definition at line 149 of file request_dispatcher.cpp.

Referenced by fawkes::WebServer::start().


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