This commit is contained in:
Simon Cruanes 2025-05-27 09:54:43 -04:00
parent ba40156f22
commit 6853fa50f3
No known key found for this signature in database
GPG key ID: EBFFF6F283F3A2B4
2 changed files with 10 additions and 1 deletions

View file

@ -1,3 +1,8 @@
(** Events.
Each callback in a subscriber corresponds to an event, which can be for
example queued somewhere or batched for further processing. *)
open Trace_core open Trace_core
module Sub = Trace_subscriber module Sub = Trace_subscriber

View file

@ -1,8 +1,10 @@
(** Subscriber that emits events *)
open Trace_core open Trace_core
open Event open Event
type event_consumer = { on_event: Event.t -> unit } [@@unboxed] type event_consumer = { on_event: Event.t -> unit } [@@unboxed]
(** Callback for events *) (** Callback for events. *)
module Callbacks : Sub.Callbacks.S with type st = event_consumer = struct module Callbacks : Sub.Callbacks.S with type st = event_consumer = struct
type st = event_consumer type st = event_consumer
@ -49,5 +51,7 @@ module Callbacks : Sub.Callbacks.S with type st = event_consumer = struct
self.on_event @@ E_extension_event { tid; time_ns; ext } self.on_event @@ E_extension_event { tid; time_ns; ext }
end end
(** A subscriber that turns calls into events that are passed to the
{! event_consumer} *)
let subscriber (consumer : event_consumer) : Sub.t = let subscriber (consumer : event_consumer) : Sub.t =
Sub.Subscriber.Sub { st = consumer; callbacks = (module Callbacks) } Sub.Subscriber.Sub { st = consumer; callbacks = (module Callbacks) }