Fawkes API  Fawkes Development Version
fawkes::WebServer Class Reference

Encapsulation of the libmicrohttpd webserver. More...

#include <>>

Public Member Functions

 WebServer (unsigned short int port, WebRequestDispatcher *dispatcher, fawkes::Logger *logger=0)
 Constructor. More...
 
 ~WebServer ()
 Destructor. More...
 
WebServersetup_tls (const char *key_pem_filepath, const char *cert_pem_filepath, const char *cipher_suite=WEBVIEW_DEFAULT_CIPHERS)
 Setup Transport Layer Security (encryption),. More...
 
WebServersetup_ipv (bool enable_ipv4, bool enable_ipv6)
 Setup protocols, i.e., IPv4 and/or IPv6. More...
 
WebServersetup_thread_pool (unsigned int num_threads)
 Setup thread pool. More...
 
WebServersetup_cors (bool allow_all, std::vector< std::string > &&origins, unsigned int max_age)
 Setup cross-origin resource sharing. More...
 
WebServersetup_basic_auth (const char *realm, WebUserVerifier *verifier)
 Setup basic authentication. More...
 
WebServersetup_request_manager (WebRequestManager *request_manager)
 Setup this server as request manager. More...
 
WebServersetup_access_log (const char *filename)
 Setup access log. More...
 
void start ()
 Start daemon and enable processing requests. More...
 
void process ()
 Process requests. 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...
 

Detailed Description

Encapsulation of the libmicrohttpd webserver.

This class opens a port serving websites and calls the supplied dispatcher for requests.

Author
Tim Niemueller

Definition at line 43 of file server.h.

Constructor & Destructor Documentation

◆ WebServer()

fawkes::WebServer::WebServer ( unsigned short int  port,
WebRequestDispatcher dispatcher,
fawkes::Logger logger = 0 
)

Constructor.

Parameters
portTCP port to listen on
dispatcherdispatcher to call for requests
loggeroptional logger, used to output possible run-time problems

Definition at line 52 of file server.cpp.

◆ ~WebServer()

fawkes::WebServer::~WebServer ( )

Destructor.

Definition at line 206 of file server.cpp.

Member Function Documentation

◆ active_requests()

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

Get number of active requests.

Returns
number of ongoing requests.

Definition at line 298 of file server.cpp.

References fawkes::WebRequestDispatcher::active_requests().

Referenced by fawkes::WebRequestManager::num_active_requests().

◆ last_request_completion_time()

Time fawkes::WebServer::last_request_completion_time ( ) const

Get time when last request was completed.

Returns
Time when last request was completed

Definition at line 307 of file server.cpp.

References fawkes::WebRequestDispatcher::last_request_completion_time().

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

◆ process()

void fawkes::WebServer::process ( )

Process requests.

This method waits for new requests and processes them when received. It is necessary to call this function if running the server in single thread mode, i.e., setup_thread_pool() has not been called or only for a single thread. The function may always be called safely, even in thread pool mode. However, when called in thread pool mode, the function will always return immediately.

Definition at line 321 of file server.cpp.

References fawkes::Thread::CANCEL_DISABLED, fawkes::Logger::log_warn(), and fawkes::Thread::set_cancel_state().

Referenced by WebviewThread::loop(), and XmlRpcThread::loop().

◆ setup_access_log()

WebServer & fawkes::WebServer::setup_access_log ( const char *  filename)

Setup access log.

Parameters
filenameaccess log file name
Returns
*this to allow for chaining

Definition at line 275 of file server.cpp.

References fawkes::WebRequestDispatcher::setup_access_log().

Referenced by WebviewThread::init().

◆ setup_basic_auth()

WebServer & fawkes::WebServer::setup_basic_auth ( const char *  realm,
WebUserVerifier verifier 
)

Setup basic authentication.

Parameters
realmauthentication realm to display to the user
verifierverifier to use for checking credentials
Returns
*this to allow for chaining

Definition at line 264 of file server.cpp.

References fawkes::WebRequestDispatcher::setup_basic_auth().

Referenced by WebviewThread::init().

◆ setup_cors()

WebServer & fawkes::WebServer::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
Returns
*this to allow for chaining

Definition at line 112 of file server.cpp.

◆ setup_ipv()

WebServer & fawkes::WebServer::setup_ipv ( bool  enable_ipv4,
bool  enable_ipv6 
)

Setup protocols, i.e., IPv4 and/or IPv6.

Parameters
enable_ipv4enable IPv4 support
enable_ipv6enable IPv6 support
Returns
*this to allow for chaining

Definition at line 97 of file server.cpp.

◆ setup_request_manager()

WebServer & fawkes::WebServer::setup_request_manager ( WebRequestManager request_manager)

Setup this server as request manager.

The registration will be cancelled automatically on destruction.

Parameters
request_managerrequest manager to register with
Returns
*this to allow for chaining

Definition at line 287 of file server.cpp.

Referenced by WebviewThread::init().

◆ setup_thread_pool()

WebServer & fawkes::WebServer::setup_thread_pool ( unsigned int  num_threads)

Setup thread pool.

This also enables epoll on Linux.

Parameters
num_threadsnumber of threads in thread pool. If this equals one, thread pooling will be disabled and will process requests from within webview thread.
Returns
*this to allow for chaining

Definition at line 129 of file server.cpp.

Referenced by WebviewThread::init().

◆ setup_tls()

WebServer & fawkes::WebServer::setup_tls ( const char *  key_pem_filepath,
const char *  cert_pem_filepath,
const char *  cipher_suite = WEBVIEW_DEFAULT_CIPHERS 
)

Setup Transport Layer Security (encryption),.

Parameters
key_pem_filepathpath to PEM formatted file containing the key
cert_pem_filepathpath to PEM formatted file containing the certificate
cipher_suitewhich cipers to use for SSL/TLS connections
Returns
*this to allow for chaining

Definition at line 75 of file server.cpp.

Referenced by WebviewThread::init().

◆ start()

void fawkes::WebServer::start ( )

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