Squid internals The event interface (src/event.c) Used to schedule a non-IO triggered callback Add an event eventAdd(name, callback, callbackdata, when, weight) Add an event within a random offset +-1/3 of delta_ish eventAddIsh(name, callback, callbackdata, delta_ish, weight) Delete a given event eventDelete(callback, callbackdata) Run the next event eventRun(void) Time until next event time = eventNextTime(void) How it works eventAdd() inserts into a linked list of events after the last event with the same or earlier time eventRun() only runs events whose callbackdata is valid (by a call to cbdataValid()) eventRun() is called in main() _before_ comm_select()