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
end
The 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.Reject
The handler for type B events simply prints the events:
let handler_b esys e =
match e with
B ->
print_endline "B"
| _ ->
raise Equeue.Reject
Finally, 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.