# `Finitomata.ClusterInfo`
[🔗](https://github.com/am-kantox/finitomata/blob/v0.35.0/lib/finitomata/distributed/cluster_info.ex#L1)

The behaviour to be implemented for locating the node across the cluster.

`Infinitomata` comes with a default naïve implementation, which simply responds
  with a determined random value for `whois/1` and with all visible nodes list
  for `nodes/0`.

The call to `Finitomata.ClusterInfo.init/1` passing the module implementing
  the desired behaviour is mandatory before any call to `Infinitomata.start_fsm/4`
  to preserve a determined consistency.

# `nodes`

```elixir
@callback nodes(Finitomata.id()) :: [node()]
```

  Returns nodes available to select from for the given `Finitomata` instance.

  If the instance is `false`, should return all the nodes for all instances.

# `whois`

```elixir
@callback whois(id :: term()) :: node() | nil
```

Returns the node “selected” for this particular `id`

# `init`

Call this function to select an implementation of a cluster lookup

# `nodes`

Delegates to the selected implementation of a cluster lookup

# `whois`

Delegates to the selected implementation of a cluster lookup

---

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