@copyright 2017 Takeru Ohta <phjgt308@gmail.com>

@doc Jaeger client library for Erlang

This is an extension of <a href="https://github.com/sile/passage">passage</a>(An OpenTracing library).

=== Examples ===

```
// Starts Jaeger in the background
$ docker run -d -p6831:6831/udp -p6832:6832/udp -p16686:16686 jaegertracing/all-in-one:latest

// Starts Erlang Shell
$ rebar3 shell
> Sampler = passage_sampler_all:new().
> ok = jaeger_passage:start_tracer(example_tracer, Sampler).

%% Starts a root span.
> RootSpan = passage:start_span(example_root, [{tracer, example_tracer}]).

%% Starts a child span.
> ChildSpan = passage:start_span(example_child, [{child_of, RootSpan}]).

%% Finishes the spans
> passage:finish_span(ChildSpan).
> passage:finish_span(RootSpan).

> q().

// Browses the tracing result
$ firefox localhost:16686
'''

=== References ===

<ul>
  <li><a href="http://opentracing.io/">OpenTracing</a></li>
  <li><a href="https://uber.github.io/jaeger/">Jaeger</a></li>
  <li><a href="https://github.com/jaegertracing/jaeger-client-go/blob/v2.9.0/README.md">jaeger-client-go/README.md</a></li>
</ul>
