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
|
||||
|
||||
def data_only(dom \\ :csys), do: filter_head([dom, :data])
|
||||
def data_only(), do: filter_head([:csys, :data])
|
||||
|
||||
# send shortcuts
|
||||
|
||||
|
|
@ -72,15 +72,14 @@ defmodule Scopes.Core do
|
|||
Actor.send(rcvr, Shape.create(head, data: data))
|
||||
end
|
||||
|
||||
def send_value(rcvr, val, dom \\ :csys) do
|
||||
send_message(rcvr, [dom, :data], %{value: val})
|
||||
def send_value(rcvr, val) do
|
||||
send_message(rcvr, [:csys, :data], %{value: val})
|
||||
end
|
||||
|
||||
# notifications
|
||||
|
||||
def notify_created(msg, new, scope) do
|
||||
[dom | _rest] = Shape.head(msg)
|
||||
msg1 = Shape.create([dom, :created],
|
||||
msg1 = Shape.create(~w(csys created)a,
|
||||
data: Map.merge(Shape.data(msg), %{old: self(), new: new}))
|
||||
notify(msg1, scope)
|
||||
end
|
||||
|
|
|
|||
|
|
@ -19,11 +19,10 @@ defmodule Scopes.Core.Environ do
|
|||
end
|
||||
|
||||
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 = Core.neuron(env_scope)
|
||||
#Actor.register(env, cells(), {:env, :c00})
|
||||
register(env, {:env, :c00})
|
||||
Actor.register(env, cells(), {:env, :c00})
|
||||
msg = Shape.create([:csys, :zero], data: %{addr: {:csys, :c00, "0-0"}})
|
||||
scope = {state, proc, [], env}
|
||||
Core.create(msg, scope)
|
||||
|
|
@ -44,8 +43,7 @@ defmodule Scopes.Core.Environ do
|
|||
new = data.new
|
||||
addr = data[:addr]
|
||||
if addr do
|
||||
#Actor.register(new, cells(), addr)
|
||||
register(new, addr)
|
||||
Actor.register(new, cells(), addr)
|
||||
end
|
||||
{step, seq} = List.pop_at(state.init_seq, 0)
|
||||
state1 = %State{init_seq: seq}
|
||||
|
|
@ -57,30 +55,15 @@ defmodule Scopes.Core.Environ do
|
|||
end
|
||||
|
||||
# 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
|
||||
cells = get_cells(addr)
|
||||
if cells == [] do
|
||||
data = Registry.lookup(cells(), addr)
|
||||
if data do
|
||||
[{cell, _val}] = data
|
||||
cell
|
||||
else
|
||||
Logger.warning "No cell found at address #{inspect(addr)}!"
|
||||
nil
|
||||
else
|
||||
[{cell, _val}] = cells
|
||||
cell
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue