Class: Futures::Value

Inherits:
Object
  • Object
show all
Defined in:
lib/futures.rb

Constant Summary collapse

TimeoutError =
Class.new(RuntimeError)

Instance Method Summary collapse

Instance Method Details

#read(timeout = nil) ⇒ Object



7
8
9
10
11
12
13
# File 'lib/futures.rb', line 7

def read(timeout = nil)
  unless @value
    @write = Thread.new { Thread.stop }
    @write.join(timeout) or raise(TimeoutError.new)
  end
  @value
end

#write(value) ⇒ Object



15
16
17
18
# File 'lib/futures.rb', line 15

def write(value)
  @value = value
  @write.wakeup if @write
end