package trace
A stub for tracing/observability, agnostic in how data is collected
Install
Dune Dependency
Authors
Maintainers
Sources
trace-0.10.tbz
sha256=c5a43827bbd5521e779c8856e44f4c718dccda902d00a242b598516110ada04d
sha512=f19cb25a767ed428cb1d4a497312267524bfaaf9550caa5fc1e84809494f0b7eaf26030d95563c75dea66606fcbec1be7e34baa4cba86fc57d64bc5d5b98efd5
doc/src/trace.event/subscriber.ml.html
Source file subscriber.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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
(** Subscriber that emits events *) open Trace_core open Event type event_consumer = { on_event: Event.t -> unit } [@@unboxed] (** Callback for events. *) module Callbacks : Sub.Callbacks.S with type st = event_consumer = struct type st = event_consumer let on_init (self : st) ~time_ns = self.on_event (E_init { time_ns }) let on_shutdown (self : st) ~time_ns = self.on_event (E_shutdown { time_ns }) let on_name_process (self : st) ~time_ns:_ ~tid:_ ~name : unit = self.on_event @@ E_name_process { name } let on_name_thread (self : st) ~time_ns:_ ~tid ~name : unit = self.on_event @@ E_name_thread { tid; name } let[@inline] on_enter_span (self : st) ~__FUNCTION__:fun_name ~__FILE__:_ ~__LINE__:_ ~time_ns ~tid ~data ~name span : unit = self.on_event @@ E_define_span { tid; name; time_ns; id = span; fun_name; data } let on_exit_span (self : st) ~time_ns ~tid:_ span : unit = self.on_event @@ E_exit_span { id = span; time_ns } let on_add_data (self : st) ~data span = if data <> [] then self.on_event @@ E_add_data { id = span; data } let on_message (self : st) ~time_ns ~tid ~span:_ ~data msg : unit = self.on_event @@ E_message { tid; time_ns; msg; data } let on_counter (self : st) ~time_ns ~tid ~data:_ ~name f : unit = self.on_event @@ E_counter { name; n = f; time_ns; tid } let on_enter_manual_span (self : st) ~__FUNCTION__:fun_name ~__FILE__:_ ~__LINE__:_ ~time_ns ~tid ~parent:_ ~data ~name ~flavor ~trace_id _span : unit = self.on_event @@ E_enter_manual_span { id = trace_id; time_ns; tid; data; name; fun_name; flavor } let on_exit_manual_span (self : st) ~time_ns ~tid ~name ~data ~flavor ~trace_id (_ : span) : unit = self.on_event @@ E_exit_manual_span { tid; id = trace_id; name; time_ns; data; flavor } let on_extension_event (self : st) ~time_ns ~tid ext : unit = self.on_event @@ E_extension_event { tid; time_ns; ext } end (** A subscriber that turns calls into events that are passed to the {! event_consumer} *) let subscriber (consumer : event_consumer) : Sub.t = Sub.Subscriber.Sub { st = consumer; callbacks = (module Callbacks) }
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>