turtle status
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user