Class: Roast::SystemCogs::Map::Config

Inherits:
Cog::Config show all
Defined in:
lib/roast/system_cogs/map.rb

Overview

Configuration for the map cog

Instance Attribute Summary

Attributes inherited from Cog::Config

#values

Instance Method Summary collapse

Methods inherited from Cog::Config

#[], #[]=, #abort_on_failure!, #abort_on_failure?, #async!, #async?, field, #initialize, #merge, #no_abort_on_failure!, #no_async!, #use_current_working_directory!, #valid_working_directory, #working_directory

Constructor Details

This class inherits a constructor from Roast::Cog::Config

Instance Method Details

#no_parallel!Object

Configure the cog to execute iterations serially (one at a time)

This is the default behavior. Iterations will run sequentially in order.

See Also

  • parallel
  • parallel!

: () -> void



63
64
65
# File 'lib/roast/system_cogs/map.rb', line 63

def no_parallel!
  @values[:parallel] = 1
end

#parallel(value) ⇒ Object

Configure the cog to execute iterations in parallel with a maximum number of concurrent tasks

Pass 0 to enable unlimited parallelism (no concurrency limit). Pass a positive integer to limit the number of iterations that can run concurrently.

Default: serial execution (equivalent to parallel(1))

See Also

  • parallel!
  • no_parallel!

: (Integer) -> void



35
36
37
38
# File 'lib/roast/system_cogs/map.rb', line 35

def parallel(value)
  # treat 0 as unlimited parallelism
  @values[:parallel] = value > 0 ? value : nil
end

#parallel!Object

Configure the cog to execute iterations in parallel with unlimited concurrency

This removes any limit on the number of iterations that can run concurrently. All iterations will start simultaneously.

See Also

  • parallel
  • no_parallel!

: () -> void



50
51
52
# File 'lib/roast/system_cogs/map.rb', line 50

def parallel!
  @values[:parallel] = nil
end

#valid_parallel!Object

Get the validated, configured parallelism limit

Returns nil for unlimited parallelism, or an Integer for the maximum number of concurrent iterations. This method will raise an InvalidConfigError if the parallelism value is negative.

See Also

  • parallel
  • parallel!
  • no_parallel!

: () -> Integer?

Raises:



86
87
88
89
90
91
92
# File 'lib/roast/system_cogs/map.rb', line 86

def valid_parallel!
  parallel = @values.fetch(:parallel, 1)
  return if parallel.nil?
  raise InvalidConfigError, "'parallel' must be >= 0 if specified" if parallel < 0

  parallel
end

#validate!Object

Validate the configuration

: () -> void



70
71
72
# File 'lib/roast/system_cogs/map.rb', line 70

def validate!
  valid_parallel!
end