lib/host_kit/rpc/exposure.ex
defmodule HostKit.RPC.Exposure do
@moduledoc "RPC module exposed by a HostKit service."
@type t :: %__MODULE__{
module: module(),
listener: atom() | String.t(),
meta: map()
}
defstruct [:module, listener: :rpc, meta: %{}]
@spec new(module(), keyword()) :: t()
def new(module, opts \\ []) when is_atom(module) do
%__MODULE__{
module: module,
listener: Keyword.get(opts, :listener, :rpc),
meta: Keyword.get(opts, :meta, %{})
}
end
end