defmodule Yggdrasil.Channel do @moduledoc """ Channel struct definition. The attributes are defined as follows: + `name` - Name of the channel. + `transformer` - Module where the encoding or decoding function is defined. + `adapter` - Module where the adapter is defined or identifier. + `namespace` - Namespace of the adapter. + `backend` - Distributor backend. + `metadata` - Metadata for the channel. Used internally. """ @doc """ Channel struct definition. """ defstruct name: nil, adapter: :elixir, transformer: nil, namespace: nil, backend: nil, metadata: nil @typedoc """ Channel. """ @type t :: %__MODULE__{ name: any(), adapter: module(), transformer: module(), namespace: atom(), backend: module(), metadata: term() } end