static void getdns_libuv_timeout_cb(uv_timer_t* handle, int status) { getdns_timeout_data_t* timeout_data = (getdns_timeout_data_t*) handle->data; timeout_data->callback(timeout_data->userarg); uint32_t rc = getdns_context_get_num_pending_requests(timeout_data->context, NULL); struct getdns_libuv_data* uv_data = (struct getdns_libuv_data*) getdns_context_get_extension_data(timeout_data->context); request_count_changed(rc, uv_data); }
/* lib event callbacks */ static void getdns_libevent_cb(evutil_socket_t fd, short what, void *userarg) { struct getdns_context* context = (struct getdns_context*) userarg; if (getdns_context_process_async(context) == GETDNS_RETURN_BAD_CONTEXT) { // context destroyed return; } uint32_t rc = getdns_context_get_num_pending_requests(context, NULL); struct event_data* ev_data = (struct event_data*) getdns_context_get_extension_data(context); request_count_changed(rc, ev_data); }
/* lib ev callbacks */ static void getdns_libev_cb(struct ev_loop *loop, struct ev_io *handle, int revents) { struct getdns_context* context = (struct getdns_context*) handle->data; if (getdns_context_process_async(context) == GETDNS_RETURN_BAD_CONTEXT) { // context destroyed return; } uint32_t rc = getdns_context_get_num_pending_requests(context, NULL); struct getdns_libev_data* ev_data = (struct getdns_libev_data*) getdns_context_get_extension_data(context); request_count_changed(rc, ev_data); }