28 lines
568 B
Elixir
28 lines
568 B
Elixir
defmodule Scopes.CSys.Environ do
|
|
use Agent
|
|
|
|
def create(parent, progs \\ %{}) do
|
|
{:ok, env} = Agent.start_link( fn -> {parent, progs} end, name: __MODULE__)
|
|
env
|
|
end
|
|
|
|
def get_prog(env, name) do
|
|
Agent.get(env, fn {_parent, progs} ->
|
|
progs[name]
|
|
end)
|
|
end
|
|
|
|
def put_prog(env, name, prog) do
|
|
Agent.update(env, fn {parent, progs} ->
|
|
{parent, Map.put(progs, name, prog)}
|
|
end)
|
|
end
|
|
|
|
def notify(env, msg) do
|
|
Agent.cast(env, fn state ->
|
|
{parent, _progs} = state
|
|
send(parent, msg)
|
|
state
|
|
end)
|
|
end
|
|
end
|