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