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