You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
645 B

modem = {}
network = {}
function modem:init(addr, handler)
local o = {}
setmetatable(o, self)
self.__index = self
o.network = network
o.address = addr
o.network[addr] = handler
return o
end
function modem:open(port)
return true
end
function modem:send(address, port, msg)
if self.network[address] ~= nil then
self.network[address](address, self.address, port, 0, msg)
end
end
function modem:broadcast(port, msg)
for addr in pairs(self.network) do
if addr ~= self.address then
self:send(addr, port, msg)
end
end
end
function modem:remove_self()
self.network[self.address] = nil
end
return modem