View Source Infinitomata (Finitomata v0.29.0)
The sibling of Finitomata
, but runs transparently in the cluster.
If you want to use a stateful consistent hash ring like libring
,
implement the behaviour Finitomata.ClusterInfo
wrapping calls to it and
invoke Finitomata.ClusterInfo.init(Impl)
before using Infinitomata.start_fsm/4
.
The example of such an implementation for libring
(assuming the named ring @ring
has been started in the supervision tree) follows.
defmodule MyApp.ClusterInfo do
@moduledoc false
@behaviour Finitomata.ClusterInfo
@impl Finitomata.ClusterInfo
def nodes, do: HashRing.nodes(@ring)
@impl Finitomata.ClusterInfo
def whois(id), do: HashRing.key_to_node(@ring, id)
end
Summary
Functions
Count of children
Returns the random FSM from the pool
Starts the FSM in the distributed environment. See Finitomata.start_fsm/4
for docs and options
Synchronizes the local Infinitomata
instance with the cluster
Functions
Count of children
Returns the random FSM from the pool
@spec start_fsm(Finitomata.id(), Finitomata.fsm_name(), module(), any()) :: DynamicSupervisor.on_start_child()
Starts the FSM in the distributed environment. See Finitomata.start_fsm/4
for docs and options
Synchronizes the local Infinitomata
instance with the cluster