package opentelemetry
Source file exporter.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(** Exporter. This is the pluggable component that actually sends signals to a OTEL collector, or prints them, or saves them somewhere. This is part of the SDK, not just the API, so most real implementations live in their own library. *) type t = { export: Any_signal_l.t -> unit; (** Export a batch of signals. Called by the provider when signals are ready to be sent. *) active: unit -> Aswitch.t; (** Lifecycle switch: turns off when the exporter has fully shut down (i.e. the consumer queue is drained). *) shutdown: unit -> unit; (** [shutdown ()] initiates shutdown: flushes remaining batches, closes the queue, etc. Watch [active] to know when it's complete. @since 0.12 *) self_metrics: unit -> Metrics.t list; (** metrics about the exporter itself *) } (** Main exporter interface. *) (** Dummy exporter, does nothing *) let dummy () : t = { export = ignore; active = (fun () -> Aswitch.dummy); shutdown = ignore; self_metrics = (fun () -> []); } let[@inline] active (self : t) : Aswitch.t = self.active () let[@inline] shutdown (self : t) : unit = self.shutdown () let (cleanup [@deprecated "use shutdown instead"]) = shutdown let[@inline] self_metrics (self : t) : _ list = self.self_metrics ()