Signed-off-by: Rahix <rahix@rahix.de>
dev
rahix 7 years ago
parent 9f8e62923e
commit 6c51c4cb4e

@ -5,15 +5,15 @@ component = {}
modem = {} modem = {}
function modem.open(port) function modem.open(port)
-- Nothing -- Nothing
end end
function modem.send(addr, port, msg) function modem.send(addr, port, msg)
network.send(addr, port, msg) network.send(addr, port, msg)
end end
function modem.broadcast(port, msg) function modem.broadcast(port, msg)
network.broadcast(port, msg) network.broadcast(port, msg)
end end
component.modem = modem component.modem = modem

@ -6,55 +6,55 @@ nodes = {}
active_node = {} active_node = {}
function network.register(addr, callback) function network.register(addr, callback)
if nodes[addr] ~= nil then if nodes[addr] ~= nil then
error("Address "..addr.." already registered!") error("Address "..addr.." already registered!")
end end
nodes[addr] = callback nodes[addr] = callback
active_node = {} active_node = {}
table.insert(active_node, addr) table.insert(active_node, addr)
end end
function network.deregister(addr) function network.deregister(addr)
nodes[addr] = nil nodes[addr] = nil
end end
function network.send(addr, port, msg) function network.send(addr, port, msg)
local callback = nodes[addr] local callback = nodes[addr]
if callback == nil then if callback == nil then
if not network.allow_blackhole then if not network.allow_blackhole then
error("Send message to offline node: "..addr) error("Send message to offline node: "..tostring(addr))
end
return nil
end end
return nil
local current_node = active_node[#active_node] end
-- Push target onto node-stack
table.insert(active_node, addr) local current_node = active_node[#active_node]
-- print("Sending from "..current_node.." to "..addr..": "..msg) -- Push target onto node-stack
-- print(require("inspect").inspect(active_node)) table.insert(active_node, addr)
callback("modem_message", addr, current_node, port, 0, msg) -- print("Sending from "..current_node.." to "..addr..": "..msg)
-- Remove again -- print(require("inspect").inspect(active_node))
active_node[#active_node] = nil callback("modem_message", addr, current_node, port, 0, msg)
-- Remove again
active_node[#active_node] = nil
end end
function network.broadcast(port, msg) function network.broadcast(port, msg)
local current_node = active_node[#active_node] local current_node = active_node[#active_node]
-- print("Broadcasting from "..current_node) -- print("Broadcasting from "..current_node)
for addr in pairs(nodes) do for addr in pairs(nodes) do
if addr ~= current_node then if addr ~= current_node then
network.send(addr, port, msg) network.send(addr, port, msg)
end
end end
end
end end
function network.set_scene(addr) function network.set_scene(addr)
active_node = {} active_node = {}
table.insert(active_node, addr) table.insert(active_node, addr)
end end
function network.get_scene(addr) function network.get_scene(addr)
return active_node[#active_node] return active_node[#active_node]
end end
return network return network

Loading…
Cancel
Save