Rewrote event scheduler. Event system clients may now call
event_schedule (see event library), which essentially operates as a deferred event_notify. event_schedule accepts a notification and a firing time, alters the notification to change the type attribute to EVENT_SCHEDULE and add a firing time attribute, and then sends the altered notification using event_notify. The event scheduler subscribes to EVENT_SCHEDULE notifications. As they arrive, it restores the type in the notification to that of the original event and enqueues the notification in a priority queue for firing at the indicated time. When the time arrives, the scheduler removes the notification from the queue and resends it using event_notify. With these changes, the event system now supports dynamic events.
Showing with 223 additions and 146 deletions