package riot

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

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
OCaml

Innovation. Community. Security.