Fawkes API Fawkes Development Version
|
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... | |
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),. More... | |
WebServer & | setup_ipv (bool enable_ipv4, bool enable_ipv6) |
Setup protocols, i.e., IPv4 and/or IPv6. More... | |
WebServer & | setup_thread_pool (unsigned int num_threads) |
Setup thread pool. More... | |
WebServer & | setup_cors (bool allow_all, std::vector< std::string > &&origins, unsigned int max_age) |
Setup cross-origin resource sharing. More... | |
WebServer & | setup_basic_auth (const char *realm, WebUserVerifier *verifier) |
Setup basic authentication. More... | |
WebServer & | setup_request_manager (WebRequestManager *request_manager) |
Setup this server as request manager. More... | |
WebServer & | setup_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... | |
Encapsulation of the libmicrohttpd webserver.
This class opens a port serving websites and calls the supplied dispatcher for requests.
fawkes::WebServer::WebServer | ( | unsigned short int | port, |
WebRequestDispatcher * | dispatcher, | ||
fawkes::Logger * | logger = 0 |
||
) |
Constructor.
port | TCP port to listen on |
dispatcher | dispatcher to call for requests |
logger | optional logger, used to output possible run-time problems |
Definition at line 53 of file server.cpp.
fawkes::WebServer::~WebServer | ( | ) |
Destructor.
Definition at line 207 of file server.cpp.
unsigned int fawkes::WebServer::active_requests | ( | ) | const |
Get number of active requests.
Definition at line 299 of file server.cpp.
References fawkes::WebRequestDispatcher::active_requests().
Referenced by fawkes::WebRequestManager::num_active_requests().
Time fawkes::WebServer::last_request_completion_time | ( | ) | const |
Get time when last request was completed.
Definition at line 308 of file server.cpp.
References fawkes::WebRequestDispatcher::last_request_completion_time().
Referenced by fawkes::WebRequestManager::last_request_completion_time().
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 322 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().
WebServer & fawkes::WebServer::setup_access_log | ( | const char * | filename | ) |
Setup access log.
filename | access log file name |
Definition at line 276 of file server.cpp.
References fawkes::WebRequestDispatcher::setup_access_log().
Referenced by WebviewThread::init().
WebServer & fawkes::WebServer::setup_basic_auth | ( | const char * | realm, |
WebUserVerifier * | verifier | ||
) |
Setup basic authentication.
realm | authentication realm to display to the user |
verifier | verifier to use for checking credentials |
Definition at line 265 of file server.cpp.
References fawkes::WebRequestDispatcher::setup_basic_auth().
Referenced by WebviewThread::init().
WebServer & fawkes::WebServer::setup_cors | ( | bool | allow_all, |
std::vector< std::string > && | origins, | ||
unsigned int | max_age | ||
) |
Setup cross-origin resource sharing.
allow_all | allow access to all hosts |
origins | allow access from these specific origins |
max_age | maximum cache time to send to the client, zero to disable |
Definition at line 113 of file server.cpp.
WebServer & fawkes::WebServer::setup_ipv | ( | bool | enable_ipv4, |
bool | enable_ipv6 | ||
) |
Setup protocols, i.e., IPv4 and/or IPv6.
enable_ipv4 | enable IPv4 support |
enable_ipv6 | enable IPv6 support |
Definition at line 98 of file server.cpp.
WebServer & fawkes::WebServer::setup_request_manager | ( | WebRequestManager * | request_manager | ) |
Setup this server as request manager.
The registration will be cancelled automatically on destruction.
request_manager | request manager to register with |
Definition at line 288 of file server.cpp.
Referenced by WebviewThread::init().
WebServer & fawkes::WebServer::setup_thread_pool | ( | unsigned int | num_threads | ) |
Setup thread pool.
This also enables epoll on Linux.
num_threads | number of threads in thread pool. If this equals one, thread pooling will be disabled and will process requests from within webview thread. |
Definition at line 130 of file server.cpp.
Referenced by WebviewThread::init().
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),.
key_pem_filepath | path to PEM formatted file containing the key |
cert_pem_filepath | path to PEM formatted file containing the certificate |
cipher_suite | which cipers to use for SSL/TLS connections |
Definition at line 76 of file server.cpp.
Referenced by WebviewThread::init().
void fawkes::WebServer::start | ( | ) |
Start daemon and enable processing requests.
Definition at line 140 of file server.cpp.
References fawkes::WebRequestDispatcher::process_request_cb(), fawkes::WebRequestDispatcher::request_completed_cb(), fawkes::WebRequestDispatcher::setup_cors(), and fawkes::WebRequestDispatcher::uri_log_cb().
Referenced by WebviewThread::init().