1
0
Fork 0
mirror of https://github.com/warmcat/libwebsockets.git synced 2025-03-30 00:00:16 +01:00

libevent: update to use static plugins and work with new libevent2

Plus fix broken indent style
This commit is contained in:
Andy Green 2017-07-27 07:57:59 +08:00
parent 41c15511eb
commit d86641ed3a
2 changed files with 214 additions and 212 deletions

View file

@ -39,12 +39,15 @@ lws_event_cb(evutil_socket_t sock_fd, short revents, void *ctx)
if (revents & EV_TIMEOUT) if (revents & EV_TIMEOUT)
return; return;
/* !!! EV_CLOSED doesn't exist in libevent2 */
#if LIBEVENT_VERSION_NUMBER < 0x02000000
if (revents & EV_CLOSED) if (revents & EV_CLOSED)
{ {
event_del(lws_io->event_watcher); event_del(lws_io->event_watcher);
event_free(lws_io->event_watcher); event_free(lws_io->event_watcher);
return; return;
} }
#endif
eventfd.fd = sock_fd; eventfd.fd = sock_fd;
eventfd.events = 0; eventfd.events = 0;

View file

@ -1,7 +1,7 @@
/* /*
* libwebsockets-test-server - libwebsockets test implementation * libwebsockets-test-server - libwebsockets test implementation
* *
* Copyright (C) 2011-2016 Andy Green <andy@warmcat.com> * Copyright (C) 2011-2017 Andy Green <andy@warmcat.com>
* *
* This file is made available under the Creative Commons CC0 1.0 * This file is made available under the Creative Commons CC0 1.0
* Universal Public Domain Dedication. * Universal Public Domain Dedication.
@ -34,6 +34,11 @@ char *resource_path = LOCAL_RESOURCE_PATH;
char crl_path[1024] = ""; char crl_path[1024] = "";
#endif #endif
#define LWS_PLUGIN_STATIC
#include "../plugins/protocol_lws_mirror.c"
#include "../plugins/protocol_lws_status.c"
#include "../plugins/protocol_lws_meta.c"
/* singlethreaded version --> no locks */ /* singlethreaded version --> no locks */
void test_server_lock(int care) void test_server_lock(int care)
@ -64,6 +69,7 @@ enum demo_protocols {
PROTOCOL_DUMB_INCREMENT, PROTOCOL_DUMB_INCREMENT,
PROTOCOL_LWS_MIRROR, PROTOCOL_LWS_MIRROR,
PROTOCOL_LWS_META,
/* always last */ /* always last */
DEMO_PROTOCOL_COUNT DEMO_PROTOCOL_COUNT
@ -86,18 +92,10 @@ static struct lws_protocols protocols[] = {
sizeof(struct per_session_data__dumb_increment), sizeof(struct per_session_data__dumb_increment),
10, 10,
}, },
{
"lws-mirror-protocol", LWS_PLUGIN_PROTOCOL_MIRROR,
callback_lws_mirror, LWS_PLUGIN_PROTOCOL_LWS_STATUS,
sizeof(struct per_session_data__lws_mirror), LWS_PLUGIN_PROTOCOL_LWS_META,
128,
},
{
"lws-status",
callback_lws_status,
sizeof(struct per_session_data__lws_status),
128,
},
{ NULL, NULL, 0, 0 } /* terminator */ { NULL, NULL, 0, 0 } /* terminator */
}; };
@ -136,12 +134,12 @@ test_server_fops_open(const struct lws_plat_file_ops *fops,
void signal_cb(evutil_socket_t sock_fd, short events, void *ctx) void signal_cb(evutil_socket_t sock_fd, short events, void *ctx)
{ {
struct event_base *event_base_loop = ctx;
lwsl_notice("Signal caught, exiting...\n"); lwsl_notice("Signal caught, exiting...\n");
force_exit = 1; force_exit = 1;
if (events & EV_SIGNAL) { if (events & EV_SIGNAL)
struct event_base *event_base_loop = event_get_base((struct event *) ctx);
event_base_loopbreak(event_base_loop); event_base_loopbreak(event_base_loop);
}
} }
static void static void
@ -206,9 +204,9 @@ int main(int argc, char **argv)
#ifndef LWS_NO_DAEMONIZE #ifndef LWS_NO_DAEMONIZE
case 'D': case 'D':
daemonize = 1; daemonize = 1;
#ifndef _WIN32 #ifndef _WIN32
syslog_options &= ~LOG_PERROR; syslog_options &= ~LOG_PERROR;
#endif #endif
break; break;
#endif #endif
case 'd': case 'd':
@ -260,7 +258,8 @@ int main(int argc, char **argv)
#endif #endif
for (n = 0; n < ARRAY_SIZE(sigs); n++) { for (n = 0; n < ARRAY_SIZE(sigs); n++) {
signals[n] = evsignal_new(event_base_loop, sigs[n], signal_cb, event_self_cbarg()); signals[n] = evsignal_new(event_base_loop, sigs[n], signal_cb, event_base_loop);
evsignal_add(signals[n], NULL); evsignal_add(signals[n], NULL);
} }
@ -330,7 +329,7 @@ int main(int argc, char **argv)
// Initialize the LWS with libevent loop // Initialize the LWS with libevent loop
lws_event_initloop(context, event_base_loop, 0); lws_event_initloop(context, event_base_loop, 0);
timeout_watcher = evtimer_new(event_base_loop, ev_timeout_cb, NULL); timeout_watcher = event_new(event_base_loop, -1, EV_PERSIST, ev_timeout_cb, NULL);
struct timeval tv = {0, 50000}; struct timeval tv = {0, 50000};
evtimer_add(timeout_watcher, &tv); evtimer_add(timeout_watcher, &tv);
event_base_dispatch(event_base_loop); event_base_dispatch(event_base_loop);