| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- --[[
- Move parent to a wait status (wait, prioritized or delayed)
- ]]
- -- Includes
- --- @include "addDelayMarkerIfNeeded"
- --- @include "addJobInTargetList"
- --- @include "addJobWithPriority"
- --- @include "isQueuePausedOrMaxed"
- --- @include "getTargetQueueList"
- local function moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
- local parentWaitKey = parentQueueKey .. ":wait"
- local parentPausedKey = parentQueueKey .. ":paused"
- local parentActiveKey = parentQueueKey .. ":active"
- local parentMetaKey = parentQueueKey .. ":meta"
- local parentMarkerKey = parentQueueKey .. ":marker"
- local jobAttributes = rcall("HMGET", parentKey, "priority", "delay")
- local priority = tonumber(jobAttributes[1]) or 0
- local delay = tonumber(jobAttributes[2]) or 0
- if delay > 0 then
- local delayedTimestamp = tonumber(timestamp) + delay
- local score = delayedTimestamp * 0x1000
- local parentDelayedKey = parentQueueKey .. ":delayed"
- rcall("ZADD", parentDelayedKey, score, parentId)
- rcall("XADD", parentQueueKey .. ":events", "*", "event", "delayed", "jobId", parentId, "delay",
- delayedTimestamp)
- addDelayMarkerIfNeeded(parentMarkerKey, parentDelayedKey)
- else
- if priority == 0 then
- local parentTarget, isParentPausedOrMaxed = getTargetQueueList(parentMetaKey, parentActiveKey,
- parentWaitKey, parentPausedKey)
- addJobInTargetList(parentTarget, parentMarkerKey, "RPUSH", isParentPausedOrMaxed, parentId)
- else
- local isPausedOrMaxed = isQueuePausedOrMaxed(parentMetaKey, parentActiveKey)
- addJobWithPriority(parentMarkerKey, parentQueueKey .. ":prioritized", priority, parentId,
- parentQueueKey .. ":pc", isPausedOrMaxed)
- end
- rcall("XADD", parentQueueKey .. ":events", "*", "event", "waiting", "jobId", parentId, "prev",
- "waiting-children")
- end
- end
|