class Coordinator::Base
Public Class Methods
new(queues)
click to toggle source
# File lib/coordinator/base.rb, line 3 def initialize(queues) @queues = queues end
Public Instance Methods
add_priority_task(skill, task)
click to toggle source
# File lib/coordinator/base.rb, line 11 def add_priority_task(skill, task) queue_for_skill(skill).left_push(task) end
add_task(skill, task)
click to toggle source
# File lib/coordinator/base.rb, line 7 def add_task(skill, task) queue_for_skill(skill).push(task) end
full?(skill)
click to toggle source
# File lib/coordinator/base.rb, line 31 def full?(skill) queue_for_skill(skill).full? end
info(skill)
click to toggle source
# File lib/coordinator/base.rb, line 35 def info(skill) queue_for_skill(skill).details end
info_all()
click to toggle source
# File lib/coordinator/base.rb, line 39 def info_all @queues.inject({}) do |hash, queue| hash[queue.skill] = info(queue.skill) hash end end
length(skill)
click to toggle source
# File lib/coordinator/base.rb, line 55 def length(skill) queue_for_skill(skill).length end
length_all()
click to toggle source
# File lib/coordinator/base.rb, line 51 def length_all @queues.inject(0) { |sum, queue| sum + queue.length } end
next_task(skills)
click to toggle source
# File lib/coordinator/base.rb, line 19 def next_task(skills) @queues.each do |q| task = q.next_task(skills) return task if task end false end
peek_all()
click to toggle source
# File lib/coordinator/base.rb, line 59 def peek_all @queues.map(&:peek).compact end
position(skill, task)
click to toggle source
# File lib/coordinator/base.rb, line 46 def position(skill, task) index = queue_for_skill(skill).items.index(task) index ? index + 1 : -1 end
remove_task(skill, task)
click to toggle source
# File lib/coordinator/base.rb, line 15 def remove_task(skill, task) queue_for_skill(skill).remove(task) end
set_capacity(skill, capacity)
click to toggle source
# File lib/coordinator/base.rb, line 27 def set_capacity(skill, capacity) queue_for_skill(skill).capacity = capacity end
Private Instance Methods
queue_for_skill(skill)
click to toggle source
# File lib/coordinator/base.rb, line 65 def queue_for_skill(skill) queue = @queues.find {|q| q.skill == skill} raise Coordinator::Error, "No matching queue for #{skill}" unless queue queue end