1
0
mirror of https://github.com/falk-werner/webfuse synced 2024-10-27 20:34:10 +00:00

removes shutdown method (#27)

This commit is contained in:
Falk Werner 2019-04-26 20:51:24 +02:00 committed by GitHub
parent 9130f00289
commit 09df34debc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 46 additions and 81 deletions

View File

@ -11,6 +11,7 @@
#include <webfuse_adapter.h>
#include <userdb.h>
#define SERVICE_TIMEOUT (1 * 1000)
struct args
{
@ -19,7 +20,7 @@ struct args
bool show_help;
};
static struct wf_server * server;
static bool shutdown_requested = false;
static void show_help(void)
{
@ -150,7 +151,7 @@ static void on_interrupt(int signal_id)
{
(void) signal_id;
wf_server_shutdown(server);
shutdown_requested = true;
}
int main(int argc, char * argv[])
@ -167,10 +168,14 @@ int main(int argc, char * argv[])
if (!args.show_help)
{
signal(SIGINT, on_interrupt);
server = wf_server_create(args.config);
struct wf_server * server = wf_server_create(args.config);
if (NULL != server)
{
wf_server_run(server);
while (!shutdown_requested)
{
wf_server_service(server, SERVICE_TIMEOUT);
}
wf_server_dispose(server);
}
else

View File

@ -11,6 +11,8 @@
#include "webfuse_provider.h"
#define SERVICE_TIMEOUT (1 * 1000)
struct config
{
char * url;
@ -314,13 +316,12 @@ static void fs_read(
}
}
static struct wfp_client * client;
static volatile bool shutdown_requested = false;
static void on_interrupt(int signal_id)
{
(void) signal_id;
wfp_client_shutdown(client);
shutdown_requested = true;
}
int main(int argc, char* argv[])
@ -362,10 +363,13 @@ int main(int argc, char* argv[])
wfp_client_config_set_onopen(config.client_config, &fs_open);
wfp_client_config_set_onread(config.client_config, &fs_read);
client = wfp_client_create(config.client_config);
struct wfp_client * client = wfp_client_create(config.client_config);
wfp_client_connect(client, config.url);
wfp_client_run(client);
while (!shutdown_requested)
{
wfp_client_service(client, SERVICE_TIMEOUT);
}
wfp_client_dispose(client);
}

View File

@ -17,11 +17,9 @@ extern WF_API struct wf_server * wf_server_create(
extern WF_API void wf_server_dispose(
struct wf_server * server);
extern WF_API void wf_server_run(
struct wf_server * server);
extern WF_API void wf_server_shutdown(
struct wf_server * server);
extern WF_API void wf_server_service(
struct wf_server * server,
int timeout_ms);
#ifdef __cplusplus
}

View File

@ -24,12 +24,9 @@ extern WFP_API void wfp_client_disconnect(
extern WFP_API void wfp_client_dispose(
struct wfp_client * client);
extern WFP_API void wfp_client_run(
struct wfp_client * client);
extern WFP_API void wfp_client_shutdown(
struct wfp_client * client);
extern WFP_API void wfp_client_service(
struct wfp_client * client,
int timeout_ms);
#ifdef __cplusplus
}

View File

@ -19,16 +19,11 @@ void wf_server_dispose(
wf_impl_server_dispose(server);
}
void wf_server_run(
struct wf_server * server)
void wf_server_service(
struct wf_server * server,
int timeout_ms)
{
wf_impl_server_run(server);
}
void wf_server_shutdown(
struct wf_server * server)
{
wf_impl_server_shutdown(server);
wf_impl_server_service(server, timeout_ms);
}
// server protocol

View File

@ -13,7 +13,6 @@
#define WF_DISABLE_LWS_LOG 0
#define WF_SERVER_PROTOCOL_COUNT 3
#define WF_SERVER_TIMEOUT (1 * 1000)
struct wf_server
{
@ -21,7 +20,6 @@ struct wf_server
struct wf_server_protocol protocol;
struct lws_protocols ws_protocols[WF_SERVER_PROTOCOL_COUNT];
struct lws_context * context;
volatile bool shutdown_requested;
struct lws_http_mount mount;
struct lws_context_creation_info info;
};
@ -109,7 +107,6 @@ struct wf_server * wf_impl_server_create(
if (NULL != server)
{
wf_impl_server_protocol_init(&server->protocol, config->mount_point);
server->shutdown_requested = false;
wf_impl_server_config_clone(config, &server->config);
wf_impl_authenticators_move(&server->config.authenticators, &server->protocol.authenticators);
server->context = wf_impl_server_context_create(server);
@ -128,19 +125,9 @@ void wf_impl_server_dispose(
free(server);
}
void wf_impl_server_run(
struct wf_server * server)
void wf_impl_server_service(
struct wf_server * server,
int timeout_ms)
{
int n = 0;
while ((0 <= n) && (!server->shutdown_requested))
{
n = lws_service(server->context, WF_SERVER_TIMEOUT);
}
lws_service(server->context, timeout_ms);
}
void wf_impl_server_shutdown(
struct wf_server * server)
{
server->shutdown_requested = true;
}

View File

@ -15,11 +15,9 @@ extern struct wf_server * wf_impl_server_create(
extern void wf_impl_server_dispose(
struct wf_server * server);
extern void wf_impl_server_run(
struct wf_server * server);
extern void wf_impl_server_shutdown(
struct wf_server * server);
extern void wf_impl_server_service(
struct wf_server * server,
int timeout_ms);
#ifdef __cplusplus
}

View File

@ -206,16 +206,11 @@ void wfp_client_dispose(
wfp_impl_client_dispose(client);
}
void wfp_client_run(
struct wfp_client * client)
void wfp_client_service(
struct wfp_client * client,
int timeout_ms)
{
wfp_impl_client_run(client);
}
void wfp_client_shutdown(
struct wfp_client * client)
{
wfp_impl_client_shutdown(client);
wfp_impl_client_service(client, timeout_ms);
}
// dirbuffer

View File

@ -14,11 +14,9 @@
#define WFP_PROTOCOL ("fs")
#define WFP_DISABLE_LWS_LOG 0
#define WFP_CLIENT_PROTOCOL_COUNT 2
#define WFP_CLIENT_TIMEOUT (1 * 1000)
struct wfp_client
{
volatile bool is_running;
struct wfp_client_protocol protocol;
struct lws_context_creation_info info;
struct lws_protocols protocols[WFP_CLIENT_PROTOCOL_COUNT];
@ -36,7 +34,6 @@ struct wfp_client * wfp_impl_client_create(
struct wfp_client * client = malloc(sizeof(struct wfp_client));
if (NULL != client)
{
client->is_running = true;
wfp_impl_client_protocol_init(&client->protocol, &config->provider, config->user_data);
memset(client->protocols, 0, sizeof(struct lws_protocols) * WFP_CLIENT_PROTOCOL_COUNT);
@ -102,18 +99,10 @@ void wfp_impl_client_disconnect(
// ToDo: implement me
}
void wfp_impl_client_run(
struct wfp_client * client)
void wfp_impl_client_service(
struct wfp_client * client,
int timeout_ms)
{
while (client->is_running)
{
lws_service(client->context, WFP_CLIENT_TIMEOUT);
}
}
void wfp_impl_client_shutdown(
struct wfp_client * client)
{
client->is_running = false;
lws_service(client->context, timeout_ms);
}

View File

@ -34,12 +34,9 @@ extern void wfp_impl_client_settimeout(
extern void wfp_impl_client_dispose(
struct wfp_client * client);
extern void wfp_impl_client_run(
struct wfp_client * client);
extern void wfp_impl_client_shutdown(
struct wfp_client * client);
extern void wfp_impl_client_service(
struct wfp_client * client,
int timeout_ms);
#ifdef __cplusplus
}