X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Finclude%2Ffrontend%2Fsock.h;h=37354c21af026e7ec171085985d8bfd865e6ce46;hb=288e7cfdab0c31ff49d9bc10ec51ceb32f476014;hp=1951614e7ba5362cdd6eb4bfd1dc380b54832a08;hpb=13c1b08cd982fd161696bc8274a380e212dac6f1;p=sysdb.git diff --git a/src/include/frontend/sock.h b/src/include/frontend/sock.h index 1951614..37354c2 100644 --- a/src/include/frontend/sock.h +++ b/src/include/frontend/sock.h @@ -25,6 +25,11 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include "utils/ssl.h" + +#include +#include + #ifndef SDB_FRONTEND_SOCK_H #define SDB_FRONTEND_SOCK_H 1 @@ -32,6 +37,16 @@ extern "C" { #endif +/* manage a front-end listener loop */ +typedef struct { + /* number of handler threads to create */ + size_t num_threads; + + /* front-end listener shuts down when this is set to false */ + bool do_loop; +} sdb_fe_loop_t; +#define SDB_FE_LOOP_INIT { 5, 1 } + /* * sdb_fe_socket_t: * A front-end socket accepting connections from clients. @@ -64,23 +79,36 @@ sdb_fe_sock_destroy(sdb_fe_socket_t *sock); * * - unix: listen on a UNIX socket * + * If specified, the SSL options will be used for any SSL connection. + * * Returns: * - 0 on success * - a negative value else */ int -sdb_fe_sock_add_listener(sdb_fe_socket_t *sock, const char *address); +sdb_fe_sock_add_listener(sdb_fe_socket_t *sock, const char *address, + const sdb_ssl_options_t *opts); + +/* + * sdb_fe_sock_clear_listeners: + * Shut down all listeners from the socket object and clear the list of + * listeners. All open connections will not be affected by this. + */ +void +sdb_fe_sock_clear_listeners(sdb_fe_socket_t *sock); /* * sdb_fe_sock_listen_and_serve: - * Listen on the specified socket and serve client requests. + * Listen on the specified socket and serve client requests. The loop + * terminates on error or when the loop condition turns to false. All + * listening sockets will be closed at that time. * * Returns: * - 0 on success * - a negative value else */ int -sdb_fe_sock_listen_and_serve(sdb_fe_socket_t *sock); +sdb_fe_sock_listen_and_serve(sdb_fe_socket_t *sock, sdb_fe_loop_t *loop); #ifdef __cplusplus } /* extern "C" */