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