defmodule Nebulex.Telemetry do @moduledoc """ Telemetry wrapper. """ # Inline common instructions @compile {:inline, execute: 3, span: 3, attach_many: 4, detach: 1} if Code.ensure_loaded?(:telemetry) do defdelegate execute(event, measurements, metadata), to: :telemetry defdelegate span(event_prefix, start_meta, span_fn), to: :telemetry defdelegate attach_many(handler_id, events, fun, config), to: :telemetry defdelegate detach(handler_id), to: :telemetry else @doc false def execute(_event, _measurements, _metadata), do: :ok @doc false def span(_event_prefix, _start_meta, span_fn), do: elem(span_fn.(), 0) @doc false def attach_many(_handler_id, _events, _fun, _config), do: :ok @doc false def detach(_handler_id), do: :ok end end