lib/runbox/run_context.ex

defmodule Runbox.RunContext do
  @moduledoc """
  Structure holding Runbox context of running slave node.
  """

  defstruct [:master_node, :node, :sup_pid, :save_entity_mf]

  @typedoc """
  Context of running run slave node.

    * `:master_node` - master node of run
    * `:node` - slave node of run
    * `:sup_pid` - pid of supervisor (running on slave) for run components running on slave
    * `:save_entity_mf` - callback definition (module and functin name) for saving entity
      state. Function is always called with 2 params: entity (`t:Runbox.StateStore.Entity.t/0`)
      and savepoint timestamp.

  """
  @type t :: %__MODULE__{
          master_node: node | nil,
          node: node | nil,
          sup_pid: pid,
          save_entity_mf: {module, atom} | nil
        }
end