59 #include <event2/event.h>
64 static struct event_base*
base = NULL;
74 if(el_data->
read != NULL) {
75 event_del(el_data->
read);
89 el_data->
read = source;
90 event_add(source, NULL);
93 con->el_data = el_data;
108 amxp_timers_calculate();
115 amxp_connection_t* con = (amxp_connection_t*) arg;
116 con->reader(fd, con->priv);
122 amxp_connection_t* con = (amxp_connection_t*) arg;
126 con->can_write = NULL;
147 const amxc_var_t*
const data,
148 UNUSED
void*
const priv) {
149 amxp_connection_t* con = NULL;
150 struct event* source = NULL;
152 when_true(amxc_var_type_of(data) != AMXC_VAR_ID_FD, leave);
154 con = amxp_connection_get(amxc_var_constcast(fd_t, data));
155 when_null(con, leave);
165 const amxc_var_t*
const data,
166 UNUSED
void*
const priv) {
167 amxp_connection_t* con = NULL;
170 when_true(amxc_var_type_of(data) != AMXC_VAR_ID_FD, leave);
172 con = amxp_connection_get(amxc_var_constcast(fd_t, data));
173 when_null(con, leave);
176 when_null(el_data, leave);
193 const amxc_var_t*
const data,
194 UNUSED
void*
const priv) {
195 amxc_llist_t* connections = amxp_connection_get_connections();
196 amxp_connection_t* con = NULL;
198 when_true(amxc_var_type_of(data) != AMXC_VAR_ID_FD, leave);
202 connections = amxp_connection_get_listeners();
205 when_null(con, leave);
207 if(con->el_data != NULL) {
209 if(el_data != NULL) {
220 struct event* source = NULL;
222 amxc_llist_for_each(it, connections) {
223 amxp_connection_t* con = amxc_llist_it_get_data(it, amxp_connection_t, it);
230 amxc_llist_for_each(it, connections) {
231 amxp_connection_t* con = amxc_llist_it_get_data(it, amxp_connection_t, it);
233 if(el_data != NULL) {
241 amxp_connection_t* con = NULL;
242 amxc_llist_for_each(it, cons) {
243 con = amxc_llist_it_get_data(it, amxp_connection_t, it);
256 struct event* event_source = NULL;
258 base = event_base_new();
259 when_null(
base, leave);
296 retval = event_base_dispatch(
base);
299 amxp_sigmngr_trigger_signal(&dm->sigmngr,
"app:stop", NULL);
300 amxp_sigmngr_trigger_signal(NULL,
"wait:cancel", NULL);
308 retval = event_base_loopbreak(
base);
326 event_base_free(
base);
static void amxrt_el_free_event_source(amxc_llist_it_t *it)
static void amxrt_el_signal_cb(UNUSED evutil_socket_t fd, UNUSED short event, UNUSED void *arg)
static void amxrt_el_add_read_fd(amxc_llist_t *connections)
static void amxrt_el_connection_read_cb(UNUSED evutil_socket_t fd, UNUSED short flags, void *arg)
static void amxrt_el_connection_can_write_cb(UNUSED evutil_socket_t fd, UNUSED short flags, void *arg)
static void amxrt_el_add_event_source(struct event *source, amxp_connection_t *con)
static void amxrt_el_signal_timers(UNUSED evutil_socket_t fd, UNUSED short event, UNUSED void *arg)
amxp_connection_t * amxrt_el_get_connection(amxc_llist_t *cons, int fd)
static struct event_base * base
static void amxrt_el_slot_wait_write_fd(UNUSED const char *const sig_name, const amxc_var_t *const data, UNUSED void *const priv)
static void amxrt_el_remove_fd(amxc_llist_t *connections)
static void amxrt_el_amxp_signal_read_cb(UNUSED evutil_socket_t fd, UNUSED short flags, UNUSED void *arg)
static void amxrt_el_amxp_syssignal_read_cb(UNUSED evutil_socket_t fd, UNUSED short flags, UNUSED void *arg)
static void amxrt_el_slot_remove_fd(UNUSED const char *const sig_name, const amxc_var_t *const data, UNUSED void *const priv)
struct _el_data el_data_t
static void amxrt_el_slot_add_fd(UNUSED const char *const sig_name, const amxc_var_t *const data, UNUSED void *const priv)
PRIVATE amxrt_t * amxrt_get(void)
int amxrt_el_destroy(void)
Cleans-up the event loop components.
int amxrt_el_start(void)
Starts the event loop.
int amxrt_el_stop(void)
Stops the event loop.
int amxrt_el_create(void)
Creates and initializes all needed event loop components.
amxd_dm_t * amxrt_get_dm(void)
Gets the runtime data model storage.
amxo_parser_t * amxrt_get_parser(void)
Gets runtime odl parser.
amxc_llist_t event_sources