Tapper v0.2.0 Tapper.Id

The ID used with the API; tracks nested spans.

Clients should consider this ID opaque!

Use destructure/1 to obtain trace parameters. NB special value :ignore produces no-ops in API functions.

Summary

Functions

Destructure the id into external hex notation, for trace propagation purposes

Pop the last parent span id from the parent stack, returning updated Tapper Id

Push the current span id onto the parent stack, and set new span id, returning updated Tapper Id

is the trace with this id being sampled?

Generate a TraceId for testing; sample is true

Types

t()
t ::
  %Tapper.Id{debug: boolean, origin_parent_id: Tapper.SpanId.t | :root, parent_ids: [Tapper.SpanId.t], sample: boolean, sampled: boolean, span_id: Tapper.SpanId.t, trace_id: Tapper.TraceId.t} |
  :ignore

Functions

destructure(id)
destructure(Tapper.Id.t) :: {String.t, String.t, String.t, boolean, boolean}

Destructure the id into external hex notation, for trace propagation purposes.

Example

id = Tapper.start()

{trace_id_hex, span_id_hex, parent_span_id_hex, sampled_flag, debug_flag} =
  Tapper.Id.destructure(id)
init(trace_id, span_id, parent_span_id, sample, debug)
init(trace_id :: Tapper.TraceId.t, span_id :: Tapper.SpanId.t, parent_span_id :: Tapper.SpanId.t, sample :: boolean, debug :: boolean) :: t

Create id from trace parameters

pop(id)

Pop the last parent span id from the parent stack, returning updated Tapper Id

push(id, span_id)

Push the current span id onto the parent stack, and set new span id, returning updated Tapper Id

sampled?(id)
sampled?(id :: t) :: boolean

is the trace with this id being sampled?

test_id(parent_span_id \\ :root)

Generate a TraceId for testing; sample is true