Main Page | Modules | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages

cq.h File Reference


Detailed Description

Callout queue.

Author:
Raphael Manfredi
Date:
2001-2003

#include <glib.h>

Go to the source code of this file.

Data Structures

struct  cevent
 Callout queue event. More...

struct  chash
struct  cqueue
 Callout queue descriptor. More...


Defines

#define cq_ticks(x)   ((x)->cq_ticks)

Typedefs

typedef void(* cq_service_t )(struct cqueue *cq, gpointer obj)
typedef cevent cevent_t
 Callout queue event.

typedef cqueue cqueue_t

Functions

gdouble callout_queue_coverage (gint old_ticks)
 Returns percentage of coverage of the callout timer, i.e.

void cq_init (void)
 Initialization.

void cq_close (void)
 Final cleanup.

cqueue_tcq_make (time_t now)
 Create a new callout queue object.

void cq_free (cqueue_t *cq)
 Free the callout queue and all contained event objects.

gpointer cq_insert (cqueue_t *cq, gint delay, cq_service_t fn, gpointer arg)
 Insert a new event in the callout queue and return an opaque handle that can be used to cancel the event.

void cq_expire (cqueue_t *cq, cevent_t *ev)
 Expire timeout by removing it out of the queue and firing its callback.

void cq_cancel (cqueue_t *cq, gpointer handle)
 Cancel a recorded timeout.

void cq_resched (cqueue_t *cq, gpointer handle, gint delay)
 Reschedule event at some other point in time.

void cq_clock (cqueue_t *cq, gint elapsed)
 The heartbeat of our callout queue.


Variables

cqueue_tcallout_queue


Define Documentation

#define cq_ticks  )     ((x)->cq_ticks)
 


Typedef Documentation

typedef struct cevent cevent_t
 

Callout queue event.

typedef void(* cq_service_t)(struct cqueue *cq, gpointer obj)
 

typedef struct cqueue cqueue_t
 


Function Documentation

gdouble callout_queue_coverage gint  old_ticks  ) 
 

Returns percentage of coverage of the callout timer, i.e.

the real amount of ticks we processed divided by the theoretical number, yielding a number between 0.0 and 1.0.

Parameters:
old_ticks the previous amount of processed ticks

void cq_cancel cqueue_t cq,
gpointer  handle
 

Cancel a recorded timeout.

They give us the opaque handle we returned via cq_insert().

Note:
This routine is also used internally to remove an expired event from the list before firing it off.

void cq_clock cqueue_t cq,
gint  elapsed
 

The heartbeat of our callout queue.

Called to notify us about the elapsed "time" so that we can expire timeouts and maintain our notion of "current time".

void cq_close void   ) 
 

Final cleanup.

void cq_expire cqueue_t cq,
cevent_t ev
 

Expire timeout by removing it out of the queue and firing its callback.

void cq_free cqueue_t cq  ) 
 

Free the callout queue and all contained event objects.

void cq_init void   ) 
 

Initialization.

gpointer cq_insert cqueue_t cq,
gint  delay,
cq_service_t  fn,
gpointer  arg
 

Insert a new event in the callout queue and return an opaque handle that can be used to cancel the event.

The event is specified to occur in some "delay" amount of time, at which time we shall call fn(cq, arg), where cq is the callout queue from where we triggered, and arg is an additional argument.

Returns:
the handle, or NULL on error.

cqueue_t* cq_make time_t  now  ) 
 

Create a new callout queue object.

The 'now' parameter is used to initialize the "current time". Use zero if you don't care...

void cq_resched cqueue_t cq,
gpointer  handle,
gint  delay
 

Reschedule event at some other point in time.

It is the responsibility of the user code to determine that the handle for the event has not yet expired, i.e. that the event has not triggered yet.


Variable Documentation

cqueue_t* callout_queue
 


Generated on Sun Feb 12 10:49:59 2006 for Gtk-Gnutella by doxygen 1.3.6