Two kinds of events:
type event = A of int | BThis event source produces ten events from A 1 to A 10:
let n = ref 1 let source esys = if !n <= 10 then begin Equeue.add_event esys (A !n); incr n endThe handler for type A events puts as many type B events on the queue as the argument counts.
let handler_a esys e = match e with A n -> for i = 1 to n do Equeue.add_event esys B done | _ -> raise Equeue.RejectThe handler for type B events simply prints the events:
let handler_b esys e = match e with B -> print_endline "B" | _ -> raise Equeue.RejectFinally, we set up the event system and start it:
let esys = Equeue.create source in Equeue.add_handler esys handler_a; Equeue.add_handler esys handler_b; Equeue.run esys;As result, the program prints 55 Bs.