class Rx::Concurrent::Future
Constants
- ALLOWED_STATES
Attributes
channel[R]
error[R]
state[R]
work[R]
Public Class Methods
execute(&block)
click to toggle source
# File lib/rx/concurrent/future.rb, line 13 def self.execute(&block) Future.new(&block).execute end
new(&block)
click to toggle source
# File lib/rx/concurrent/future.rb, line 21 def initialize(&block) @channel = Queue.new @state = :pending @work = block end
thread_pool()
click to toggle source
# File lib/rx/concurrent/future.rb, line 17 def self.thread_pool @@pool end
Public Instance Methods
completed?()
click to toggle source
# File lib/rx/concurrent/future.rb, line 27 def completed? state == :completed end
execute()
click to toggle source
# File lib/rx/concurrent/future.rb, line 31 def execute @state = :in_progress pool.submit do begin channel << work.call @state = :completed rescue StandardError => ex @error = ex @state = :failed channel.close end end self end
failed?()
click to toggle source
# File lib/rx/concurrent/future.rb, line 47 def failed? state == :failed end
in_progress?()
click to toggle source
# File lib/rx/concurrent/future.rb, line 51 def in_progress? state == :in_progress end
pending?()
click to toggle source
# File lib/rx/concurrent/future.rb, line 55 def pending? state == :pending end
value()
click to toggle source
# File lib/rx/concurrent/future.rb, line 59 def value if (completed? || failed?) && channel.empty? return @value end @value = channel.pop end
Private Instance Methods
pool()
click to toggle source
# File lib/rx/concurrent/future.rb, line 70 def pool @@pool end