Class: Coordinator::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/coordinator/base.rb

Instance Method Summary collapse

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

Returns:

  • (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_allObject



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_allObject



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_allObject



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