EasyRpc.WrapperConfig (EasyRpc v0.9.1)

Copy Markdown View Source

Configuration struct for RPC wrappers.

Fields

  • node_selector - NodeSelector for picking target nodes
  • module - Remote module to call (required)
  • timeout - RPC timeout in ms, or :infinity (default: 5_000)
  • retry - Retry attempts on failure (default: 0)
  • sleep_before_retry - Milliseconds to sleep before each retry (default: 0)
  • error_handling - Return {:ok, _} | {:error, _} tuples (default: false)

  • enable_logging - Enable log for rpc
  • functions - Function specs used by RpcWrapper (default: [])

Summary

Types

function_spec()

@type function_spec() ::
  {name :: atom(), arity :: non_neg_integer()}
  | {name :: atom(), arity :: non_neg_integer(), opts :: keyword()}

t()

@type t() :: %EasyRpc.WrapperConfig{
  enable_logging: boolean(),
  error_handling: boolean(),
  functions: [function_spec()],
  module: module(),
  node_selector: EasyRpc.NodeSelector.t() | nil,
  retry: non_neg_integer(),
  sleep_before_retry: non_neg_integer(),
  timeout: pos_integer() | :infinity
}

Functions

load_config!(app_name, config_name)

@spec load_config!(app :: atom(), config_name :: atom()) :: t()

Loads config from the application environment.

Expected format:

config :my_app, :rpc_config,
  nodes: [:node1@host],
  select_mode: :random,
  module: RemoteModule,
  timeout: 5_000,
  retry: 3,
  sleep_before_retry: 200,
  error_handling: true,
  functions: [{:func_name, 1}]

load_from_options!(options)

@spec load_from_options!(keyword()) :: t()

Loads config from a keyword list.

new!(node_selector, module)

@spec new!(EasyRpc.NodeSelector.t(), module()) :: t()

Creates a validated WrapperConfig with explicit parameters.

new!(node_selector, module, timeout)

@spec new!(EasyRpc.NodeSelector.t(), module(), pos_integer() | :infinity) :: t()

new!(node_selector, module, timeout, retry)

@spec new!(
  EasyRpc.NodeSelector.t(),
  module(),
  pos_integer() | :infinity,
  non_neg_integer()
) :: t()

new!(node_selector, module, timeout, retry, sleep_before_retry)

@spec new!(
  EasyRpc.NodeSelector.t(),
  module(),
  pos_integer() | :infinity,
  non_neg_integer(),
  non_neg_integer()
) :: t()

new!(node_selector, module, timeout, retry, sleep_before_retry, error_handling)

@spec new!(
  EasyRpc.NodeSelector.t(),
  module(),
  pos_integer() | :infinity,
  non_neg_integer(),
  non_neg_integer(),
  boolean()
) :: t()

validate!(config)

@spec validate!(t()) :: t()

Validates a WrapperConfig struct. Raises EasyRpc.Error on any invalid field.