Compare commits
No commits in common. "311261cd02e464c3280b30d62a21eac04294686d" and "eb0954eeee6bb528beb4cf9bab4111245c58bdcf" have entirely different histories.
311261cd02
...
eb0954eeee
2 changed files with 12 additions and 30 deletions
|
|
@ -63,7 +63,7 @@ defmodule Scopes.Core do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def data_only(dom \\ :csys), do: filter_head([dom, :data])
|
def data_only(), do: filter_head([:csys, :data])
|
||||||
|
|
||||||
# send shortcuts
|
# send shortcuts
|
||||||
|
|
||||||
|
|
@ -72,15 +72,14 @@ defmodule Scopes.Core do
|
||||||
Actor.send(rcvr, Shape.create(head, data: data))
|
Actor.send(rcvr, Shape.create(head, data: data))
|
||||||
end
|
end
|
||||||
|
|
||||||
def send_value(rcvr, val, dom \\ :csys) do
|
def send_value(rcvr, val) do
|
||||||
send_message(rcvr, [dom, :data], %{value: val})
|
send_message(rcvr, [:csys, :data], %{value: val})
|
||||||
end
|
end
|
||||||
|
|
||||||
# notifications
|
# notifications
|
||||||
|
|
||||||
def notify_created(msg, new, scope) do
|
def notify_created(msg, new, scope) do
|
||||||
[dom | _rest] = Shape.head(msg)
|
msg1 = Shape.create(~w(csys created)a,
|
||||||
msg1 = Shape.create([dom, :created],
|
|
||||||
data: Map.merge(Shape.data(msg), %{old: self(), new: new}))
|
data: Map.merge(Shape.data(msg), %{old: self(), new: new}))
|
||||||
notify(msg1, scope)
|
notify(msg1, scope)
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -19,11 +19,10 @@ defmodule Scopes.Core.Environ do
|
||||||
end
|
end
|
||||||
|
|
||||||
def setup({state, proc}, init_seq, proc_env \\ &proc_env/2) do
|
def setup({state, proc}, init_seq, proc_env \\ &proc_env/2) do
|
||||||
Registry.start_link(keys: :duplicate, name: cells())
|
Registry.start_link(keys: :unique, name: cells())
|
||||||
env_scope = {%State{init_seq: init_seq}, proc_env, [], self()}
|
env_scope = {%State{init_seq: init_seq}, proc_env, [], self()}
|
||||||
env = Core.neuron(env_scope)
|
env = Core.neuron(env_scope)
|
||||||
#Actor.register(env, cells(), {:env, :c00})
|
Actor.register(env, cells(), {:env, :c00})
|
||||||
register(env, {:env, :c00})
|
|
||||||
msg = Shape.create([:csys, :zero], data: %{addr: {:csys, :c00, "0-0"}})
|
msg = Shape.create([:csys, :zero], data: %{addr: {:csys, :c00, "0-0"}})
|
||||||
scope = {state, proc, [], env}
|
scope = {state, proc, [], env}
|
||||||
Core.create(msg, scope)
|
Core.create(msg, scope)
|
||||||
|
|
@ -44,8 +43,7 @@ defmodule Scopes.Core.Environ do
|
||||||
new = data.new
|
new = data.new
|
||||||
addr = data[:addr]
|
addr = data[:addr]
|
||||||
if addr do
|
if addr do
|
||||||
#Actor.register(new, cells(), addr)
|
Actor.register(new, cells(), addr)
|
||||||
register(new, addr)
|
|
||||||
end
|
end
|
||||||
{step, seq} = List.pop_at(state.init_seq, 0)
|
{step, seq} = List.pop_at(state.init_seq, 0)
|
||||||
state1 = %State{init_seq: seq}
|
state1 = %State{init_seq: seq}
|
||||||
|
|
@ -57,30 +55,15 @@ defmodule Scopes.Core.Environ do
|
||||||
end
|
end
|
||||||
|
|
||||||
# accessing cell registry
|
# accessing cell registry
|
||||||
|
|
||||||
def register(cell, {dom, cat}) do
|
|
||||||
Actor.register(cell, cells(), {dom, cat})
|
|
||||||
end
|
|
||||||
|
|
||||||
def register(cell, {dom, cat, item}) do
|
|
||||||
Actor.register(cell, cells(), {dom, cat}, item)
|
|
||||||
end
|
|
||||||
|
|
||||||
def get_cells(addr) do
|
|
||||||
case addr do
|
|
||||||
{dom, cat, item} -> Registry.match(cells(), {dom, cat}, item)
|
|
||||||
_ -> Registry.lookup(cells(), addr)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def get_cell(addr) do
|
def get_cell(addr) do
|
||||||
cells = get_cells(addr)
|
data = Registry.lookup(cells(), addr)
|
||||||
if cells == [] do
|
if data do
|
||||||
|
[{cell, _val}] = data
|
||||||
|
cell
|
||||||
|
else
|
||||||
Logger.warning "No cell found at address #{inspect(addr)}!"
|
Logger.warning "No cell found at address #{inspect(addr)}!"
|
||||||
nil
|
nil
|
||||||
else
|
|
||||||
[{cell, _val}] = cells
|
|
||||||
cell
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue