Current section

Files

Jump to
modbus lib shared.ex
Raw

lib/shared.ex

defmodule Modbus.Model.Shared do
alias Modbus.Model
def start_link(params, opts \\ []) do
Agent.start_link(fn -> init(params) end, opts)
end
def stop(pid) do
Agent.stop(pid)
end
def state(pid) do
Agent.get(pid, fn model -> model end)
end
def apply(pid, cmd) do
Agent.get_and_update(pid, fn model ->
{new, values} = Model.apply(model, cmd)
{{:ok, values}, new}
end)
end
defp init(params) do
Keyword.fetch!(params, :model)
end
end