ocaml-opentelemetry/src/core/span_link.ml
Simon Cruanes c1b27980f2
large refactor: split core library into many modules; change API design
follow more closely the official OTEL recommendations, and also try
to reduce global state.

- use a class type for `Exporter.t` (instead of 1st class module `backend`)
- have tracer, logger, metrics_emitter as explicit objects
- keep a `Main_exporter` to make migration easier, but discouraged
- add stdout_exporter and debug_exporter to opentelemetry.client
2025-12-03 13:23:58 -05:00

20 lines
675 B
OCaml

open Common_
open Proto.Trace
type t = span_link
let make ~trace_id ~span_id ?trace_state ?(attrs = []) ?dropped_attributes_count
() : t =
let attributes = List.map Key_value.conv attrs in
let dropped_attributes_count =
Option.map Int32.of_int dropped_attributes_count
in
make_span_link
~trace_id:(Trace_id.to_bytes trace_id)
~span_id:(Span_id.to_bytes span_id) ?trace_state ~attributes
?dropped_attributes_count ()
let[@inline] of_span_ctx ?trace_state ?attrs ?dropped_attributes_count
(ctx : Span_ctx.t) : t =
make ~trace_id:(Span_ctx.trace_id ctx) ~span_id:(Span_ctx.parent_id ctx)
?trace_state ?attrs ?dropped_attributes_count ()