class SmartCore::Operation::StepSet

@api private @since 0.5.0

Attributes

steps[R]

@return [Array<SmartCore:::Operation::Step>]

@api private @since 0.5.0

Public Class Methods

new() click to toggle source

@return [void]

@api private @since 0.5.0

# File lib/smart_core/operation/step_set.rb, line 19
def initialize
  @steps = []
  @access_lock = Mutex.new
end

Public Instance Methods

<<(step)
Alias for: add_step
add_step(step) click to toggle source

@param step [SmartCore::Operation::Step] @return [void]

@api private @since 0.5.0

# File lib/smart_core/operation/step_set.rb, line 29
def add_step(step)
  thread_safe { steps << step }
end
Also aliased as: <<
concat(step_set) click to toggle source

@param step_set [SmartCore::Operation::Step] @return [void]

@api private @sinec 0.5.0

# File lib/smart_core/operation/step_set.rb, line 39
def concat(step_set)
  thread_safe { steps.concat(step_set.dup.steps) }
end
dup() click to toggle source

@retun [SmartCore::Operation::StepSet]

@api private @since 0.5.0

# File lib/smart_core/operation/step_set.rb, line 47
def dup
  thread_safe do
    self.class.new.tap do |duplicate|
      steps.each { |step| duplicate.add_step(step.dup) }
    end
  end
end
each(&block) click to toggle source

@return [Enumerable]

@api private @since 0.5.0

# File lib/smart_core/operation/step_set.rb, line 59
def each(&block)
  thread_safe { block_given? ? steps.each(&block) : steps.each }
end

Private Instance Methods

thread_safe(&block) click to toggle source

@param block [Proc] @return [Any]

@api private @since 0.5.0

# File lib/smart_core/operation/step_set.rb, line 70
def thread_safe(&block)
  @access_lock.synchronize(&block)
end