module Pwrake::TaskAlgorithm

Attributes

arguments[R]
property[R]
subsequents[R]
unfinished_prereq[R]

Public Instance Methods

check_prereq_finished(preq_name=nil) click to toggle source
# File lib/pwrake/task/task_algorithm.rb, line 97
def check_prereq_finished(preq_name=nil)
  @unfinished_prereq.delete(preq_name)
  !@already_finished && @unfinished_prereq.empty?
end
pw_enq_subsequents() click to toggle source
# File lib/pwrake/task/task_algorithm.rb, line 87
def pw_enq_subsequents
  # not synchronize owing to fiber
  @subsequents.each do |t|        # <<--- competition !!!
    if t && t.check_prereq_finished(self.name)
      application.task_queue.enq(t.wrapper)
    end
  end
  @already_finished = true        # <<--- competition !!!
end
pw_search_tasks(args) click to toggle source
# File lib/pwrake/task/task_algorithm.rb, line 21
def pw_search_tasks(args)
  Log.debug "#{self.class}[#{name}]#pw_search_tasks start, args=#{args.inspect}"
  if application.options.trace
    application.trace "** Search #{name}#{format_search_flags}"
  end
  cl = Pwrake.clock
  TaskWrapper.clear_rank
  task_args = TaskArguments.new(arg_names, args)
  # not synchronize owing to fiber
  search_with_call_chain(nil, task_args, InvocationChain::EMPTY)
  #
  Log.debug "#{self.class}[#{name}]#pw_search_tasks end t=%.6f" % (Pwrake.clock-cl)
end
pw_set_property(property) click to toggle source
# File lib/pwrake/task/task_algorithm.rb, line 102
def pw_set_property(property)
  if @property
    @property.merge(property)
  else
    @property = property
  end
  self
end
wrapper() click to toggle source
# File lib/pwrake/task/task_algorithm.rb, line 13
def wrapper
  if @wrapper.nil?
    Log.debug "TaskWrapper is not defined for #{self.class}[#{name}]"
    @wrapper = TaskWrapper.new(self)
  end
  @wrapper
end

Private Instance Methods

format_search_flags() click to toggle source

Format the trace flags for display.

# File lib/pwrake/task/task_algorithm.rb, line 78
def format_search_flags
  flags = []
  flags << "finished" if @already_finished
  flags << "first_time" unless @already_searched
  flags << "not_needed" unless needed?
  flags.empty? ? "" : " (" + flags.join(", ") + ")"
end