lib/cloister/listener.ex

defmodule Cloister.Listener do
  @moduledoc """
  The behavior to be implemented by `Cloister.Monitor` listeners.
  """

  @doc """
  Passed to the `Cloister.Monitor.start_link/1` and is being called
  on each subsequent monitored node state change.

  Listeners are obliged to handle `:up`, `:rehashing` and `:stopping` events.
  """
  @callback on_state_change(
              from :: Cloister.Monitor.Fsm.state(),
              state :: Cloister.Monitor.t()
            ) :: :ok
end