1 /*
2  * lws-minimal-http-server-eventlib-foreign
3  *
4  * Written in 2010-2020 by Andy Green <[email protected]>
5  *
6  * This file is made available under the Creative Commons CC0 1.0
7  * Universal Public Domain Dedication.
8  *
9  * The uloop specific code
10  */
11 
12 #include <libwebsockets.h>
13 
14 #include <libubox/uloop.h>
15 
16 #include <string.h>
17 #include <signal.h>
18 
19 #include "private.h"
20 
21 static struct uloop_timeout timer_outer_uloop;
22 
23 static void
timer_cb_uloop(struct uloop_timeout * ti)24 timer_cb_uloop(struct uloop_timeout *ti)
25 {
26 	foreign_timer_service(NULL);
27 	uloop_timeout_set(&timer_outer_uloop, 1090);
28 }
29 
30 static void
foreign_event_loop_init_and_run_uloop(void)31 foreign_event_loop_init_and_run_uloop(void)
32 {
33 	uloop_init();
34 
35 	timer_outer_uloop.cb = timer_cb_uloop;
36 	uloop_timeout_add(&timer_outer_uloop);
37 
38 	uloop_timeout_set(&timer_outer_uloop, 1090);
39 
40 	uloop_run();
41 }
42 
43 static void
foreign_event_loop_stop_uloop(void)44 foreign_event_loop_stop_uloop(void)
45 {
46 	uloop_end();
47 }
48 
49 static void
foreign_event_loop_cleanup_uloop(void)50 foreign_event_loop_cleanup_uloop(void)
51 {
52 	uloop_timeout_cancel(&timer_outer_uloop);
53 }
54 
55 const struct ops ops_uloop = {
56 	foreign_event_loop_init_and_run_uloop,
57 	foreign_event_loop_stop_uloop,
58 	foreign_event_loop_cleanup_uloop
59 };
60