other versions
- wheezy 0.11.1-2
- jessie 0.11.1-2
- jessie-backports 1.0-1~bpo8+1
- testing 1.0.1-1
- unstable 1.0.1-1
qbloop.h(3) | libqb | qbloop.h(3) |
NAME¶
qbloop.h - Main loop manages timers, jobs and polling sockets.SYNOPSIS¶
#include <signal.h>Typedefs¶
typedef struct qb_loop qb_loop_t
Enumerations¶
enum qb_loop_priority { QB_LOOP_LOW = 0, QB_LOOP_MED = 1, QB_LOOP_HIGH = 2 }
Functions¶
qb_loop_t * qb_loop_create (void)
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_priorityp, void *data, qb_loop_job_dispatch_fndispatch_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_priorityp, void *data, qb_loop_job_dispatch_fndispatch_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 paramaters (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_priorityp, int32_tfd, int32_tevents, void *data, qb_loop_poll_dispatch_fndispatch_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_tfd)¶
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_fnfn)¶
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_priorityp, int32_tfd, int32_tevents, void *data, qb_loop_poll_dispatch_fndispatch_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_priorityp, int32_tsignal, void *data, qb_loop_signal_dispatch_fndispatch_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
signal (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_handlehandle)¶
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_priorityp, int32_tsignal, void *data, qb_loop_signal_dispatch_fndispatch_fn, qb_loop_signal_handlehandle)¶
Modify the signal job. Parameters:l pointer to the loop instance
p the priority
signal (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_priorityp, uint64_tnsec_duration, void *data, qb_loop_timer_dispatch_fndispatch_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_handleth)¶
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_handleth)¶
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_handleth)¶
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.Tue Apr 3 2012 | Version 0.11.1 |