Fawkes API  Fawkes Development Version
fawkes::WebRequestDispatcher Class Reference

#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 int 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 51 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 65 of file request_dispatcher.cpp.

◆ ~WebRequestDispatcher()

fawkes::WebRequestDispatcher::~WebRequestDispatcher ( )

Destructor.

Definition at line 83 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 551 of file request_dispatcher.cpp.

◆ 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 561 of file request_dispatcher.cpp.

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

◆ process_request_cb()

int 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 166 of file request_dispatcher.cpp.

◆ 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 187 of file request_dispatcher.cpp.

◆ setup_access_log()

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

Setup access log.

Parameters
filenameaccess log file name

Definition at line 120 of file request_dispatcher.cpp.

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

◆ 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 99 of file request_dispatcher.cpp.

◆ 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 133 of file request_dispatcher.cpp.

◆ 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 148 of file request_dispatcher.cpp.


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