Method: Pmux::TaskScheduler#allocate_task_to_slot

Defined in:
lib/pmux/task_scheduler.rb

#allocate_task_to_slot(node_addr, task) ⇒ Object



120
121
122
123
124
125
126
127
128
129
130
131
132
133
# File 'lib/pmux/task_scheduler.rb', line 120

def allocate_task_to_slot node_addr, task
  if (node = @node_table[node_addr]) and @shipped[node_addr]
    slot = (@allocated_tasks[node_addr] ||= [])
    num_workers = node[:num_workers] || 2
    if slot.size >= num_workers
      return false
    else
      return false if slot.include? task
      task[:node_addr] = node_addr
      slot.push task
      return true
    end
  end
end