WebRequestDispatcher Class Reference

Web request dispatcher. More...

#include <request_dispatcher.h>

List of all members.


Public Member Functions

void add_processor (const char *url_prefix, WebRequestProcessor *processor)
 Add a request processor.
void remove_processor (const char *url_prefix)
 Remove a request processor.
int queue_static_reply (struct MHD_Connection *connection, StaticWebReply *sreply)
 Queue a static web reply.
int process_request (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.

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.
static int dynamic_reply_data_cb (void *reply, uint64_t pos, char *buf, int max)
 Callback based chunk-wise data.
static void dynamic_reply_free_cb (void *reply)
 Callback to free dynamic web reply.

Detailed Description

Web request dispatcher.

Takes web request received via a webserver run by libmicrohttpd and dispatches pages to registered WebRequestProcessor instances or gives a 404 error if no processor was registered for the given base url.

Author:
Tim Niemueller

Definition at line 38 of file request_dispatcher.h.


Member Function Documentation

void WebRequestDispatcher::add_processor ( const char *  url_prefix,
WebRequestProcessor processor 
)

Add a request processor.

Parameters:
url_prefix baseurl this processor should handle
processor processor for baseurl

Definition at line 228 of file request_dispatcher.cpp.

int WebRequestDispatcher::dynamic_reply_data_cb ( void *  reply,
uint64_t  pos,
char *  buf,
int  max 
) [static]

Callback based chunk-wise data.

Supplies data chunk based.

Parameters:
reply instance of DynamicWebReply
pos position in stream
buf buffer to put data in
max maximum number of bytes that can be put in buf
Returns:
suitable libmicrohttpd return code

Definition at line 79 of file request_dispatcher.cpp.

References DynamicWebReply::next_chunk().

Referenced by process_request().

void WebRequestDispatcher::dynamic_reply_free_cb ( void *  reply  )  [static]

Callback to free dynamic web reply.

Parameters:
reply Instance of DynamicWebReply to free.

Definition at line 91 of file request_dispatcher.cpp.

Referenced by process_request().

int WebRequestDispatcher::process_request ( 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.

Parameters:
connection libmicrohttpd connection instance
url URL, may contain escape sequences
method HTTP method
version HTTP version
upload_data uploaded data
upload_data_size size of upload_data parameter
session_data session data pointer
Returns:
appropriate return code for libmicrohttpd

Definition at line 142 of file request_dispatcher.cpp.

References DynamicWebReply::chunk_size(), dynamic_reply_data_cb(), dynamic_reply_free_cb(), fawkes::hex_unescape(), WebReply::HTTP_INTERNAL_SERVER_ERROR, WebReply::HTTP_NOT_FOUND, WebRequestProcessor::process_request(), queue_static_reply(), and DynamicWebReply::size().

Referenced by process_request_cb().

int 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_data instance of WebRequestDispatcher to call
connection libmicrohttpd connection instance
url URL, may contain escape sequences
method HTTP method
version HTTP version
upload_data uploaded data
upload_data_size size of upload_data parameter
session_data session data pointer
Returns:
appropriate return code for libmicrohttpd

Definition at line 55 of file request_dispatcher.cpp.

References process_request().

Referenced by WebviewThread::init().

int WebRequestDispatcher::queue_static_reply ( struct MHD_Connection *  connection,
StaticWebReply sreply 
)

Queue a static web reply.

Parameters:
connection libmicrohttpd connection to queue response to
sreply static web reply to queue
Returns:
suitable libmicrohttpd return code

Definition at line 104 of file request_dispatcher.cpp.

References StaticWebReply::body(), StaticWebReply::body_length(), WebReply::code(), WebReply::headers(), and StaticWebReply::pack().

Referenced by process_request().

void WebRequestDispatcher::remove_processor ( const char *  url_prefix  ) 

Remove a request processor.

Parameters:
url_prefix baseurl the processor handled

Definition at line 243 of file request_dispatcher.cpp.


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