Provided by: libqb-dev_1.0.1-1ubuntu1_amd64
NAME
qbloop.h - Main loop manages timers, jobs and polling sockets.
SYNOPSIS
#include <signal.h> #include <stdint.h> #include <poll.h> Typedefs typedef struct qb_loop qb_loop_t An opaque data type representing the main loop. typedef uint64_t qb_loop_timer_handle typedef void * qb_loop_signal_handle typedef int32_t(* qb_loop_poll_dispatch_fn) (int32_t fd, int32_t revents, void *data) typedef void(* qb_loop_job_dispatch_fn) (void *data) typedef void(* qb_loop_timer_dispatch_fn) (void *data) typedef int32_t(* qb_loop_signal_dispatch_fn) (int32_t rsignal, void *data) typedef void(* qb_loop_poll_low_fds_event_fn) (int32_t not_enough, int32_t fds_available) Enumerations enum qb_loop_priority { QB_LOOP_LOW = 0, QB_LOOP_MED = 1, QB_LOOP_HIGH = 2 } Priorites for jobs, timers & poll. " Functions qb_loop_t * qb_loop_create (void) Create a new main loop. void qb_loop_destroy (struct qb_loop *l) void qb_loop_stop (qb_loop_t *l) Stop the main loop. void qb_loop_run (qb_loop_t *l) Run the main loop. int32_t qb_loop_job_add (qb_loop_t *l, enum qb_loop_priority p, void *data, qb_loop_job_dispatch_fn dispatch_fn) Add a job to the mainloop. int32_t qb_loop_job_del (struct qb_loop *l, enum qb_loop_priority p, void *data, qb_loop_job_dispatch_fn dispatch_fn) Delete a job from the mainloop. int32_t qb_loop_timer_add (qb_loop_t *l, enum qb_loop_priority p, uint64_t nsec_duration, void *data, qb_loop_timer_dispatch_fn dispatch_fn, qb_loop_timer_handle *timer_handle_out) Add a timer to the mainloop. int32_t qb_loop_timer_del (qb_loop_t *l, qb_loop_timer_handle th) Delete a timer that is still outstanding. int32_t qb_loop_timer_is_running (qb_loop_t *l, qb_loop_timer_handle th) Check to see if a timer that is still outstanding. uint64_t qb_loop_timer_expire_time_get (struct qb_loop *l, qb_loop_timer_handle th) Get the time remaining before it expires. int32_t qb_loop_poll_low_fds_event_set (qb_loop_t *l, qb_loop_poll_low_fds_event_fn fn) Set a callback to receive events on file descriptors getting low. int32_t qb_loop_poll_add (qb_loop_t *l, enum qb_loop_priority p, int32_t fd, int32_t events, void *data, qb_loop_poll_dispatch_fn dispatch_fn) Add a poll job to the mainloop. int32_t qb_loop_poll_mod (qb_loop_t *l, enum qb_loop_priority p, int32_t fd, int32_t events, void *data, qb_loop_poll_dispatch_fn dispatch_fn) Modify a poll job. int32_t qb_loop_poll_del (qb_loop_t *l, int32_t fd) Delete a poll job. int32_t qb_loop_signal_add (qb_loop_t *l, enum qb_loop_priority p, int32_t sig, void *data, qb_loop_signal_dispatch_fn dispatch_fn, qb_loop_signal_handle *handle) Add a signal job. int32_t qb_loop_signal_mod (qb_loop_t *l, enum qb_loop_priority p, int32_t sig, void *data, qb_loop_signal_dispatch_fn dispatch_fn, qb_loop_signal_handle handle) Modify the signal job. int32_t qb_loop_signal_del (qb_loop_t *l, qb_loop_signal_handle handle) Delete the signal job.
Detailed Description
Main loop manages timers, jobs and polling sockets.
Typedef Documentation
typedef void(* qb_loop_job_dispatch_fn) (void *data) typedef int32_t(* qb_loop_poll_dispatch_fn) (int32_t fd, int32_t revents, void *data) typedef void(* qb_loop_poll_low_fds_event_fn) (int32_t not_enough, int32_t fds_available) typedef int32_t(* qb_loop_signal_dispatch_fn) (int32_t rsignal, void *data) typedef void* qb_loop_signal_handle typedef struct qb_loop qb_loop_t An opaque data type representing the main loop. typedef void(* qb_loop_timer_dispatch_fn) (void *data) typedef uint64_t qb_loop_timer_handle
Enumeration Type Documentation
enum qb_loop_priority Priorites for jobs, timers & poll. Enumerator QB_LOOP_LOW QB_LOOP_MED QB_LOOP_HIGH
Function Documentation
qb_loop_t* qb_loop_create (void) Create a new main loop. Returns: loop instance. void qb_loop_destroy (struct qb_loop * l) int32_t qb_loop_job_add (qb_loop_t * l, enum qb_loop_priority p, void * data, qb_loop_job_dispatch_fn dispatch_fn) Add a job to the mainloop. This is run in the next cycle of the loop. Note: it is a one-shot job. Parameters: l pointer to the loop instance p the priority data user data passed into the dispatch function dispatch_fn callback function Returns: status (0 == ok, -errno == failure) int32_t qb_loop_job_del (struct qb_loop * l, enum qb_loop_priority p, void * data, qb_loop_job_dispatch_fn dispatch_fn) Delete a job from the mainloop. This will try to delete the job if it hasn't run yet. Note: this will remove the first job that matches the parameters (priority, data, dispatch_fn). Parameters: l pointer to the loop instance p the priority data user data passed into the dispatch function dispatch_fn callback function Returns: status (0 == ok, -errno == failure) int32_t qb_loop_poll_add (qb_loop_t * l, enum qb_loop_priority p, int32_t fd, int32_t events, void * data, qb_loop_poll_dispatch_fn dispatch_fn) Add a poll job to the mainloop. Note: it is a re-occuring job. Parameters: l pointer to the loop instance p the priority fd file descriptor. events (POLLIN|POLLOUT) etc .... data user data passed into the dispatch function dispatch_fn callback function Returns: status (0 == ok, -errno == failure) int32_t qb_loop_poll_del (qb_loop_t * l, int32_t fd) Delete a poll job. Parameters: l pointer to the loop instance fd file descriptor. Returns: status (0 == ok, -errno == failure) int32_t qb_loop_poll_low_fds_event_set (qb_loop_t * l, qb_loop_poll_low_fds_event_fn fn) Set a callback to receive events on file descriptors getting low. Parameters: l pointer to the loop instance fn callback function. Returns: status (0 == ok, -errno == failure) int32_t qb_loop_poll_mod (qb_loop_t * l, enum qb_loop_priority p, int32_t fd, int32_t events, void * data, qb_loop_poll_dispatch_fn dispatch_fn) Modify a poll job. Parameters: l pointer to the loop instance p the priority fd file descriptor. events (POLLIN|POLLOUT) etc .... data user data passed into the dispatch function dispatch_fn callback function Returns: status (0 == ok, -errno == failure) void qb_loop_run (qb_loop_t * l) Run the main loop. Parameters: l pointer to the loop instance int32_t qb_loop_signal_add (qb_loop_t * l, enum qb_loop_priority p, int32_t sig, void * data, qb_loop_signal_dispatch_fn dispatch_fn, qb_loop_signal_handle * handle) Add a signal job. Get a callback on this signal (not in the context of the signal). Parameters: l pointer to the loop instance p the priority sig (SIGHUP or SIGINT) etc .... data user data passed into the dispatch function dispatch_fn callback function handle (out) a reference to the signal job Returns: status (0 == ok, -errno == failure) int32_t qb_loop_signal_del (qb_loop_t * l, qb_loop_signal_handle handle) Delete the signal job. Parameters: l pointer to the loop instance handle (in) a reference to the signal job Returns: status (0 == ok, -errno == failure) int32_t qb_loop_signal_mod (qb_loop_t * l, enum qb_loop_priority p, int32_t sig, void * data, qb_loop_signal_dispatch_fn dispatch_fn, qb_loop_signal_handle handle) Modify the signal job. Parameters: l pointer to the loop instance p the priority sig (SIGHUP or SIGINT) etc .... data user data passed into the dispatch function dispatch_fn callback function handle (in) a reference to the signal job Returns: status (0 == ok, -errno == failure) void qb_loop_stop (qb_loop_t * l) Stop the main loop. Parameters: l pointer to the loop instance int32_t qb_loop_timer_add (qb_loop_t * l, enum qb_loop_priority p, uint64_t nsec_duration, void * data, qb_loop_timer_dispatch_fn dispatch_fn, qb_loop_timer_handle * timer_handle_out) Add a timer to the mainloop. Note: it is a one-shot job. Parameters: l pointer to the loop instance p the priority nsec_duration nano-secs in the future to run the dispatch. data user data passed into the dispatch function dispatch_fn callback function timer_handle_out handle to delete the timer if needed. Returns: status (0 == ok, -errno == failure) int32_t qb_loop_timer_del (qb_loop_t * l, qb_loop_timer_handle th) Delete a timer that is still outstanding. Parameters: l pointer to the loop instance th handle to delete the timer if needed. Returns: status (0 == ok, -errno == failure) uint64_t qb_loop_timer_expire_time_get (struct qb_loop * l, qb_loop_timer_handle th) Get the time remaining before it expires. Note: if the timer has already expired it will return 0 Parameters: l pointer to the loop instance th timer handle. Returns: nano seconds left int32_t qb_loop_timer_is_running (qb_loop_t * l, qb_loop_timer_handle th) Check to see if a timer that is still outstanding. Parameters: l pointer to the loop instance th handle to delete the timer if needed. Return values: QB_TRUE yes this timer is outstanding QB_FALSE this timer does not exist or has expired
Author
Generated automatically by Doxygen for libqb from the source code.