Class: Parallelizer::Computation
- Inherits:
-
Object
- Object
- Parallelizer::Computation
- Includes:
- Callable
- Defined in:
- lib/parallelizer.rb
Overview
Implement a callable class
Instance Attribute Summary collapse
-
#execution_requested_time ⇒ Object
Returns the value of attribute execution_requested_time.
-
#result_index ⇒ Object
Returns the value of attribute result_index.
-
#results_array ⇒ Object
Returns the value of attribute results_array.
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(parallelizer, proc, argument = nil) ⇒ Computation
constructor
A new instance of Computation.
- #test_delay ⇒ Object
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_time ⇒ Object
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_index ⇒ Object
Returns the value of attribute result_index.
73 74 75 |
# File 'lib/parallelizer.rb', line 73 def result_index @result_index end |
#results_array ⇒ Object
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
#call ⇒ Object
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_delay ⇒ Object
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 |