40 lines
1.3 KiB
Lua
40 lines
1.3 KiB
Lua
--[[
|
|
Add delay marker if needed.
|
|
]]
|
|
|
|
-- Includes
|
|
--- @include "addDelayedJob"
|
|
--- @include "addJobWithPriority"
|
|
--- @include "isQueuePaused"
|
|
--- @include "storeJob"
|
|
--- @include "getTargetQueueList"
|
|
--- @include "addJobInTargetList"
|
|
|
|
local function addJobFromScheduler(jobKey, jobId, opts, waitKey, pausedKey, activeKey, metaKey,
|
|
prioritizedKey, priorityCounter, delayedKey, markerKey, eventsKey, name, maxEvents, timestamp,
|
|
data, jobSchedulerId, repeatDelay)
|
|
|
|
opts['delay'] = repeatDelay
|
|
opts['jobId'] = jobId
|
|
|
|
local delay, priority = storeJob(eventsKey, jobKey, jobId, name, data,
|
|
opts, timestamp, nil, nil, jobSchedulerId)
|
|
|
|
if delay ~= 0 then
|
|
addDelayedJob(jobId, delayedKey, eventsKey, timestamp, maxEvents, markerKey, delay)
|
|
else
|
|
local target, isPausedOrMaxed = getTargetQueueList(metaKey, activeKey, waitKey, pausedKey)
|
|
|
|
-- Standard or priority add
|
|
if priority == 0 then
|
|
local pushCmd = opts['lifo'] and 'RPUSH' or 'LPUSH'
|
|
addJobInTargetList(target, markerKey, pushCmd, isPausedOrMaxed, jobId)
|
|
else
|
|
-- Priority add
|
|
addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounter, isPausedOrMaxed)
|
|
end
|
|
-- Emit waiting event
|
|
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "waiting", "jobId", jobId)
|
|
end
|
|
end
|