Class: Sidekiq::JobSet
Instance Attribute Summary
Attributes inherited from SortedSet
#name
Instance Method Summary
collapse
Methods inherited from SortedSet
#clear, #initialize, #size
Instance Method Details
#delete(score, jid = nil) ⇒ Object
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
|
# File 'lib/sidekiq/api.rb', line 445
def delete(score, jid = nil)
if jid
elements = Sidekiq.redis do |conn|
conn.zrangebyscore(name, score, score)
end
elements_with_jid = elements.map do |element|
message = Sidekiq.load_json(element)
if message["jid"] == jid
_, @_size = Sidekiq.redis do |conn|
conn.multi do
conn.zrem(name, element)
conn.zcard name
end
end
end
end
elements_with_jid.count != 0
else
count, @_size = Sidekiq.redis do |conn|
conn.multi do
conn.zremrangebyscore(name, score, score)
conn.zcard name
end
end
count != 0
end
end
|
#each(&block) ⇒ Object
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
|
# File 'lib/sidekiq/api.rb', line 404
def each(&block)
initial_size = @_size
offset_size = 0
page = -1
page_size = 50
loop do
range_start = page * page_size + offset_size
range_end = page * page_size + offset_size + (page_size - 1)
elements = Sidekiq.redis do |conn|
conn.zrange name, range_start, range_end, :with_scores => true
end
break if elements.empty?
page -= 1
elements.each do |element, score|
block.call SortedEntry.new(self, score, element)
end
offset_size = initial_size - @_size
end
end
|
#fetch(score, jid = nil) ⇒ Object
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
|
# File 'lib/sidekiq/api.rb', line 425
def fetch(score, jid = nil)
elements = Sidekiq.redis do |conn|
conn.zrangebyscore(name, score, score)
end
elements.inject([]) do |result, element|
entry = SortedEntry.new(self, score, element)
if jid
result << entry if entry.jid == jid
else
result << entry
end
result
end
end
|
#find_job(jid) ⇒ Object
441
442
443
|
# File 'lib/sidekiq/api.rb', line 441
def find_job(jid)
self.detect { |j| j.jid == jid }
end
|
#schedule(timestamp, message) ⇒ Object
398
399
400
401
402
|
# File 'lib/sidekiq/api.rb', line 398
def schedule(timestamp, message)
Sidekiq.redis do |conn|
conn.zadd(name, timestamp.to_f.to_s, Sidekiq.dump_json(message))
end
end
|