class Swarm::Engine::Volatile::Queue
Constants
- Tube
Attributes
name[R]
tube[R]
Public Class Methods
get_tube(name)
click to toggle source
# File lib/swarm/engine/volatile/queue.rb, line 19 def get_tube(name) tubes[name] ||= Tube.new([], []) end
new(name:)
click to toggle source
# File lib/swarm/engine/volatile/queue.rb, line 24 def initialize(name:) @name = name @tube = self.class.get_tube(name) end
tubes()
click to toggle source
# File lib/swarm/engine/volatile/queue.rb, line 15 def tubes @tubes ||= {} end
Public Instance Methods
add_job(data)
click to toggle source
# File lib/swarm/engine/volatile/queue.rb, line 34 def add_job(data) new_job = Job.new(queue: self, data: data) jobs << new_job new_job end
add_worker(worker)
click to toggle source
# File lib/swarm/engine/volatile/queue.rb, line 75 def add_worker(worker) workers << worker end
clear()
click to toggle source
# File lib/swarm/engine/volatile/queue.rb, line 67 def clear tube.jobs = [] end
delete_job(job_to_delete)
click to toggle source
# File lib/swarm/engine/volatile/queue.rb, line 59 def delete_job(job_to_delete) jobs.delete_if { |job| job == job_to_delete } end
has_job?(job_to_find)
click to toggle source
# File lib/swarm/engine/volatile/queue.rb, line 63 def has_job?(job_to_find) jobs.any? { |job| job == job_to_find } end
idle?()
click to toggle source
# File lib/swarm/engine/volatile/queue.rb, line 79 def idle? jobs.empty? end
prepare_for_work(worker)
click to toggle source
# File lib/swarm/engine/volatile/queue.rb, line 29 def prepare_for_work(worker) add_worker(worker) unless workers.include?(worker) self end
reserve_job(worker)
click to toggle source
# File lib/swarm/engine/volatile/queue.rb, line 48 def reserve_job(worker) wait_for_job index = jobs.index { |job| job.available? } raise JobNotFoundError unless index job = jobs[index] job.reserve!(worker) job rescue JobNotFoundError, Job::AlreadyReservedError raise JobReservationFailed end
wait_for_job()
click to toggle source
# File lib/swarm/engine/volatile/queue.rb, line 40 def wait_for_job delay_time = 0 until jobs.count > 0 delay_time += 0.01 unless delay_time > 1.0 sleep(delay_time) end end
worker_count()
click to toggle source
# File lib/swarm/engine/volatile/queue.rb, line 71 def worker_count workers.count end