Source file telemetry_app.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
open Runtime
type event = Telemetry.event = ..
let name = "Riot.Telemetry"
module Dispatcher = struct
type Message.t += Event of Telemetry.event [@@unboxed]
let __main_dispatcher__ : Pid.t ref = ref Pid.zero
let rec loop () =
match receive () with
| Event e ->
Telemetry.emit e;
loop ()
| _ -> loop ()
let start_link () =
let pid = spawn_link (fun () -> loop ()) in
__main_dispatcher__ := pid;
Ok pid
let emit ev = send !__main_dispatcher__ (Event ev)
end
let start () = Dispatcher.start_link ()
let emit = Dispatcher.emit
let attach = Telemetry.attach