Module Trace_subscriber

Generic subscribers.

This defines the notion of a subscriber, a set of callbacks for every trace event. It also defines a collector that needs to be installed for the subscriber(s) to be called.

Thanks to Subscriber.tee_l it's possible to combine multiple subscribers into a single collector.

module Callbacks : sig ... end

Callbacks used for subscribers.

module Subscriber : sig ... end

Trace subscribers

module Span_tbl : sig ... end

A table that can be used to remember information about spans.

type user_data =
  1. | U_bool of bool
  2. | U_float of float
  3. | U_int of int
  4. | U_none
  5. | U_string of string
    (*

    A non polymorphic-variant version of Trace_core.user_data

    *)
type flavor =
  1. | Sync
  2. | Async
    (*

    A non polymorphic-variant version of Trace_core.flavor

    *)

Main API

type t = Subscriber.t

A trace subscriber. It pairs a set of callbacks with the state they need (which can contain a file handle, a socket to write events to, config, etc.).

The design goal for this is that it should be possible to avoid allocations whenever the trace collector invokes the callbacks.

val collector : t -> Trace_core.collector

A collector that calls the subscriber's callbacks.

It uses mtime (if available) to obtain timestamps.