Tapper v0.6.2 Tapper.Id View Source

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.

Link to this section 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

Link to this section Functions

Specs

destructure(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)
Link to this function

init(trace_id, span_id, parent_span_id, sample, debug)

View Source

Specs

init(
  trace_id :: Tapper.TraceId.t(),
  span_id :: Tapper.SpanId.t(),
  parent_span_id :: Tapper.SpanId.t() | :root,
  sample :: boolean(),
  debug :: boolean()
) :: t()

Create id from trace context

Specs

pop(t()) :: t()

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

Specs

push(t(), Tapper.SpanId.t()) :: t()

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

Specs

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

is the trace with this id being sampled?

Link to this function

test_id(parent_span_id \\ :root)

View Source

Generate a TraceId for testing; sample is true