Class: Parallelizer::Computation

Inherits:
Object
  • Object
show all
Includes:
Callable
Defined in:
lib/parallelizer.rb

Overview

Implement a callable class

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(parallelizer, proc, argument = nil) ⇒ Computation

Returns a new instance of Computation.



75
76
77
78
79
# File 'lib/parallelizer.rb', line 75

def initialize parallelizer, proc, argument=nil
  @parallelizer = parallelizer
  @proc = proc
  @argument = argument
end

Instance Attribute Details

#execution_requested_timeObject

Returns the value of attribute execution_requested_time.



73
74
75
# File 'lib/parallelizer.rb', line 73

def execution_requested_time
  @execution_requested_time
end

#result_indexObject

Returns the value of attribute result_index.



73
74
75
# File 'lib/parallelizer.rb', line 73

def result_index
  @result_index
end

#results_arrayObject

Returns the value of attribute results_array.



73
74
75
# File 'lib/parallelizer.rb', line 73

def results_array
  @results_array
end

Instance Method Details

#callObject



81
82
83
84
85
86
87
88
# File 'lib/parallelizer.rb', line 81

def call
  begin
    test_delay
    @results_array[@result_index] = @argument ? @proc.call(@argument) : @proc.call
  rescue
    @results_array[@result_index] = $!
  end
end

#test_delayObject



90
91
92
93
94
95
96
# File 'lib/parallelizer.rb', line 90

def test_delay
  delay = nil
  if @parallelizer.max_acceptable_delay && @parallelizer.delayed_too_long_proc && @execution_requested_time &&
      (delay = Time.now.to_f - @execution_requested_time.to_f) > @parallelizer.max_acceptable_delay
    @parallelizer.delayed_too_long_proc.call(delay)
  end
end