moveParentToWait.lua 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. --[[
  2. Move parent to a wait status (wait, prioritized or delayed)
  3. ]]
  4. -- Includes
  5. --- @include "addDelayMarkerIfNeeded"
  6. --- @include "addJobInTargetList"
  7. --- @include "addJobWithPriority"
  8. --- @include "isQueuePausedOrMaxed"
  9. --- @include "getTargetQueueList"
  10. local function moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
  11. local parentWaitKey = parentQueueKey .. ":wait"
  12. local parentPausedKey = parentQueueKey .. ":paused"
  13. local parentActiveKey = parentQueueKey .. ":active"
  14. local parentMetaKey = parentQueueKey .. ":meta"
  15. local parentMarkerKey = parentQueueKey .. ":marker"
  16. local jobAttributes = rcall("HMGET", parentKey, "priority", "delay")
  17. local priority = tonumber(jobAttributes[1]) or 0
  18. local delay = tonumber(jobAttributes[2]) or 0
  19. if delay > 0 then
  20. local delayedTimestamp = tonumber(timestamp) + delay
  21. local score = delayedTimestamp * 0x1000
  22. local parentDelayedKey = parentQueueKey .. ":delayed"
  23. rcall("ZADD", parentDelayedKey, score, parentId)
  24. rcall("XADD", parentQueueKey .. ":events", "*", "event", "delayed", "jobId", parentId, "delay",
  25. delayedTimestamp)
  26. addDelayMarkerIfNeeded(parentMarkerKey, parentDelayedKey)
  27. else
  28. if priority == 0 then
  29. local parentTarget, isParentPausedOrMaxed = getTargetQueueList(parentMetaKey, parentActiveKey,
  30. parentWaitKey, parentPausedKey)
  31. addJobInTargetList(parentTarget, parentMarkerKey, "RPUSH", isParentPausedOrMaxed, parentId)
  32. else
  33. local isPausedOrMaxed = isQueuePausedOrMaxed(parentMetaKey, parentActiveKey)
  34. addJobWithPriority(parentMarkerKey, parentQueueKey .. ":prioritized", priority, parentId,
  35. parentQueueKey .. ":pc", isPausedOrMaxed)
  36. end
  37. rcall("XADD", parentQueueKey .. ":events", "*", "event", "waiting", "jobId", parentId, "prev",
  38. "waiting-children")
  39. end
  40. end