Class: Coordinator::Base
- Inherits:
-
Object
- Object
- Coordinator::Base
- Defined in:
- lib/coordinator/base.rb
Instance Method Summary collapse
- #add_priority_task(skill, task) ⇒ Object
- #add_task(skill, task) ⇒ Object
- #full?(skill) ⇒ Boolean
- #info(skill) ⇒ Object
- #info_all ⇒ Object
-
#initialize(queues) ⇒ Base
constructor
A new instance of Base.
- #length(skill) ⇒ Object
- #length_all ⇒ Object
- #next_task(skills) ⇒ Object
- #peek_all ⇒ Object
- #position(skill, task) ⇒ Object
- #remove_task(skill, task) ⇒ Object
- #set_capacity(skill, capacity) ⇒ Object
Constructor Details
#initialize(queues) ⇒ Base
Returns a new instance of Base.
3 4 5 |
# File 'lib/coordinator/base.rb', line 3 def initialize(queues) @queues = queues end |
Instance Method Details
#add_priority_task(skill, task) ⇒ Object
11 12 13 |
# 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) ⇒ Object
7 8 9 |
# File 'lib/coordinator/base.rb', line 7 def add_task(skill, task) queue_for_skill(skill).push(task) end |
#full?(skill) ⇒ Boolean
31 32 33 |
# File 'lib/coordinator/base.rb', line 31 def full?(skill) queue_for_skill(skill).full? end |
#info(skill) ⇒ Object
35 36 37 |
# File 'lib/coordinator/base.rb', line 35 def info(skill) queue_for_skill(skill).details end |
#info_all ⇒ Object
39 40 41 42 43 44 |
# 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) ⇒ Object
55 56 57 |
# File 'lib/coordinator/base.rb', line 55 def length(skill) queue_for_skill(skill).length end |
#length_all ⇒ Object
51 52 53 |
# File 'lib/coordinator/base.rb', line 51 def length_all @queues.inject(0) { |sum, queue| sum + queue.length } end |
#next_task(skills) ⇒ Object
19 20 21 22 23 24 25 |
# 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 ⇒ Object
59 60 61 |
# File 'lib/coordinator/base.rb', line 59 def peek_all @queues.map(&:peek).compact end |
#position(skill, task) ⇒ Object
46 47 48 49 |
# 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) ⇒ Object
15 16 17 |
# File 'lib/coordinator/base.rb', line 15 def remove_task(skill, task) queue_for_skill(skill).remove(task) end |
#set_capacity(skill, capacity) ⇒ Object
27 28 29 |
# File 'lib/coordinator/base.rb', line 27 def set_capacity(skill, capacity) queue_for_skill(skill).capacity = capacity end |