mirror of
https://github.com/kepler155c/opus
synced 2024-11-15 13:14:49 +00:00
34 lines
609 B
Lua
34 lines
609 B
Lua
|
local Util = require('util')
|
||
|
|
||
|
local parallel = _G.parallel
|
||
|
|
||
|
local BulkGet = { }
|
||
|
|
||
|
function BulkGet.download(list, callback)
|
||
|
local t = { }
|
||
|
local failed = false
|
||
|
|
||
|
for _ = 1, 5 do
|
||
|
table.insert(t, function()
|
||
|
while true do
|
||
|
local entry = table.remove(list)
|
||
|
if not entry then
|
||
|
break
|
||
|
end
|
||
|
local s, m = Util.download(entry.url, entry.path)
|
||
|
if not s then
|
||
|
failed = true
|
||
|
end
|
||
|
callback(entry, s, m)
|
||
|
if failed then
|
||
|
break
|
||
|
end
|
||
|
end
|
||
|
end)
|
||
|
end
|
||
|
|
||
|
parallel.waitForAll(table.unpack(t))
|
||
|
end
|
||
|
|
||
|
return BulkGet
|