turtle status

This commit is contained in:
kepler155c@gmail.com
2019-02-21 02:05:35 -05:00
parent 1643145cf0
commit 10e7c1c233
5 changed files with 50 additions and 33 deletions

View File

@@ -35,32 +35,43 @@ function Swarm:init(args)
end
function Swarm:add(id, args)
local member = Util.shallowCopy(args)
local member = Util.shallowCopy(args or { })
member.id = id
self.pool[id] = member
end
function Swarm:remove(id, s, m)
local member = self.pool[id]
if member then
self.pool[id] = nil
self:onRemove(member, s, m)
if member.socket then
member.socket:close()
member.socket = nil
end
if member.handler then
Event.terminate(member.handler)
member.handler = nil
end
end
end
function Swarm:run(fn)
for id, member in pairs(self.pool) do
if not member.socket then
Event.addRoutine(function()
member.handler = Event.addRoutine(function()
local s, m = pcall(function()
member.turtle, member.socket = hijackTurtle(id)
fn(member)
end)
if member.socket then
member.socket:close()
member.socket = nil
end
self.pool[id] = nil
self:onRemove(member, s, m)
self:remove(id, s, m)
end)
end
end
end
function Swarm:shutdown()
function Swarm:stop()
for _, member in pairs(self.pool) do
if member.socket then
member.socket:close()