Module Duppy.Task


module Task: sig .. end


This modules implements the core task registration.

A task will be a set of events to watch, and a corresponding function to execute when one of the events is trigered.

The executed function may then return a list of new tasks to schedule.

type ('a, 'b) task = {
   priority : 'a;
   events : 'b list;
   handler : 'b list -> ('a, 'b) task list;
}

A task is a list of events awaited, and a function to process events that have occured.

The 'a parameter is the type of priorities, 'b will be a subset of possible events.

type event = [ `Delay of float
| `Exception of Unix.file_descr
| `Read of Unix.file_descr
| `Write of Unix.file_descr ]
Type for possible events.
val add : 'a Duppy.scheduler -> ('a, [< event ]) task -> unit
Schedule a task.