Class: JobWorkflow::TaskGraph

Inherits:
Object
  • Object
show all
Includes:
Enumerable, Enumerable[Task], TSort, TSort[Task]
Defined in:
lib/job_workflow/task_graph.rb,
sig/generated/job_workflow/task_graph.rbs

Instance Method Summary collapse

Constructor Details

#initializeTaskGraph

: () -> void



11
12
13
# File 'lib/job_workflow/task_graph.rb', line 11

def initialize
  @tasks = {} #: Hash[Symbol, Task]
end

Instance Method Details

#add(task) ⇒ void

This method returns an undefined value.

: (Task) -> void

Parameters:



16
17
18
# File 'lib/job_workflow/task_graph.rb', line 16

def add(task)
  @tasks[task.task_name] = task
end

#each {|arg0| ... } ⇒ void

This method returns an undefined value.

: () { (Task) -> void } -> void

Yields:

Yield Parameters:

Yield Returns:

  • (void)


26
27
28
# File 'lib/job_workflow/task_graph.rb', line 26

def each(&)
  tsort.each(&)
end

#fetch(task_name) ⇒ Task?

: (Symbol?) -> Task?

Parameters:

  • (Symbol, nil)

Returns:



21
22
23
# File 'lib/job_workflow/task_graph.rb', line 21

def fetch(task_name)
  @tasks[task_name]
end

#tsort_each_child(task) {|arg0| ... } ⇒ void

This method returns an undefined value.

: (Task task) { (Task) -> void } -> void

Parameters:

Yields:

Yield Parameters:

Yield Returns:

  • (void)


36
37
38
39
40
41
42
43
# File 'lib/job_workflow/task_graph.rb', line 36

def tsort_each_child(task)
  task.depends_on.each do |dep_task_name|
    dep_task = @tasks[dep_task_name]
    raise ArgumentError, "Task '#{task.task_name}' depends on missing task '#{dep_task_name}'" if dep_task.nil?

    yield(dep_task)
  end
end

#tsort_each_node {|arg0| ... } ⇒ void

This method returns an undefined value.

: () { (Task) -> void } -> void

Yields:

Yield Parameters:

Yield Returns:

  • (void)


31
32
33
# File 'lib/job_workflow/task_graph.rb', line 31

def tsort_each_node(&)
  @tasks.values.each(&)
end