diff --git a/src/core/trace_core.ml b/src/core/trace_core.ml index 95d037b..bd2e04a 100644 --- a/src/core/trace_core.ml +++ b/src/core/trace_core.ml @@ -145,6 +145,10 @@ let shutdown () = | C_none -> () | C_some (st, cbs) -> cbs.shutdown st +let with_setup_collector c f = + setup_collector c; + Fun.protect ~finally:shutdown f + type extension_event = Types.extension_event = .. let[@inline] extension_event ev : unit = diff --git a/src/core/trace_core.mli b/src/core/trace_core.mli index 5c3179e..e9d495d 100644 --- a/src/core/trace_core.mli +++ b/src/core/trace_core.mli @@ -188,6 +188,11 @@ val shutdown : unit -> unit (** [shutdown ()] shutdowns the current collector, if one was installed, and waits for it to terminate before returning. *) +val with_setup_collector : Collector.t -> (unit -> 'a) -> 'a +(** [with_setup_collector c f] installs [c], calls [f()], and shutdowns [c] once + [f()] is done. + @since NEXT_RELEASE *) + (** {2 Extensions} *) type extension_event = Types.extension_event = ..