class Steep::Server::Master

def start

def start
  source_paths = project.targets.flat_map {|target| target.source_files.keys }
  bin_size = (source_paths.size / code_workers.size) + 1
  source_paths.each_slice(bin_size).with_index do |paths, index|
    register_code_to_worker(paths, worker: code_workers[index])
  end
  Thread.new do
    interaction_worker.reader.read do |message|
      process_message_from_worker(message)
    end
  end
  Thread.new do
    signature_worker.reader.read do |message|
      process_message_from_worker(message)
    end
  end
  code_workers.each do |worker|
    Thread.new do
      worker.reader.read do |message|
        process_message_from_worker(message)
      end
    end
  end
  Thread.new do
    reader.read do |request|
      process_message_from_client(request)
    end
  end
  while job = queue.pop
    writer.write(job)
  end
  writer.io.close
  each_worker do |w|
    w.shutdown()
  end
end