defmodule Grizzly.Indicator do @moduledoc """ Indicator handling for Grizzly when an indicator event is triggered See `Grizzly.Supervisor` for configuring the dispatcher that Grizzly should use during runtime. """ require Logger @type event() :: :on | :off @type dispatcher() :: (event() -> :ok) @doc """ Handles an event from `BEAMNotify` """ @spec handle_event([String.t()], %{String.t() => String.t()}, dispatcher()) :: :ok def handle_event(event, _env, nil) do Logger.debug("Received indicator event: #{inspect(event)}") end def handle_event(event, _env, dispatcher) do case Integer.parse(hd(event)) do {0, _} -> dispatcher.(:off) {v, _} when v > 1 -> dispatcher.(:on) :error -> Logger.debug("Received unexpected indicator event: #{inspect(event)}") end end end