# `ASM.Extensions.PubSub.Adapter`
[🔗](https://github.com/nshkrdotcom/agent_session_manager/blob/v0.9.2/lib/asm/extensions/pub_sub/adapter.ex#L1)

Behaviour for PubSub adapter implementations.

Adapters encapsulate subscription and broadcast mechanics for a concrete
backend (for example local `Registry` or Phoenix PubSub).

# `state`

```elixir
@type state() :: term()
```

# `broadcast`

```elixir
@callback broadcast(state(), String.t(), term()) :: :ok | {:error, ASM.Error.t() | term()}
```

# `init`

```elixir
@callback init(keyword()) :: {:ok, state()} | {:error, ASM.Error.t() | term()}
```

# `subscribe`

```elixir
@callback subscribe(state(), String.t()) :: :ok | {:error, ASM.Error.t() | term()}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
