README.md

# SMPPEX Telemetry

Library for tracing SMPP session ([SMPPEX.Session](https://github.com/funbox/smppex/blob/master/lib/smppex/session.ex)) events with [telemetry](https://github.com/beam-telemetry/telemetry).

`SMPPEXTelemetry`:
* implements `SMPPEX.TransportSession` protocol;
* wraps `SMPPEX.Session` module with callbacks sending `:telemetery` events.

Events are the following:
```elixir
[:smppex, :session, :init]
[:smppex, :session, :in_pdu]
[:smppex, :session, :out_pdu]
[:smppex, :session, :socket_closed]
[:smppex, :session, :socket_error]
[:smppex, :session, :terminate]
[:smppex, :session, :code_change]
```

Each event contains `session: session_pid` metadata for identifying sessions.

Usage:

```elixir
SMPPEX.ESME.start_link(
  host,
  port,
  {module, args},
  session_module: SMPPEXTelemetry.Session
)
```
or
```elixir
SMPPEX.MC.start(
  {module, args},
  transport_opts: %{
    socket_opts: [
      port: port
    ]
  },
  session_module: SMPPEXTelemetry.Session
)
```

## Installation

If [available in Hex](https://hex.pm/docs/publish), the package can be installed
by adding `smppex_telemetry` to your list of dependencies in `mix.exs`:

```elixir
def deps do
  [
    {:smppex_telemetry, "~> 0.1.0"}
  ]
end
```

## License

This software is licensed under [MIT License](LICENSE).