Module Duppy.Task

module Task: sig .. end

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.

Please not that currently, under win32, all socket used in ocaml-duppy are expected to be in blocking mode only!

val add : 'a Duppy.scheduler -> ('a, [< event ]) task -> unit

Schedule a task.