class Cadence::Workflow::Future
Attributes
callbacks[R]
cancelation_id[R]
context[R]
failure[R]
result[R]
target[R]
Public Class Methods
new(target, context, cancelation_id: nil)
click to toggle source
# File lib/cadence/workflow/future.rb, line 8 def initialize(target, context, cancelation_id: nil) @target = target @context = context @cancelation_id = cancelation_id @callbacks = [] @ready = false @result = nil @failure = nil end
Public Instance Methods
cancel()
click to toggle source
# File lib/cadence/workflow/future.rb, line 64 def cancel return false if finished? context.cancel(target, cancelation_id) end
done(&block)
click to toggle source
# File lib/cadence/workflow/future.rb, line 53 def done(&block) # do nothing return if failed? if ready? block.call(result) else callbacks << block end end
fail(reason, details)
click to toggle source
# File lib/cadence/workflow/future.rb, line 47 def fail(reason, details) raise 'can not fail a fulfilled future' if ready? @failure = [reason, details] end
failed?()
click to toggle source
# File lib/cadence/workflow/future.rb, line 26 def failed? !!@failure end
finished?()
click to toggle source
# File lib/cadence/workflow/future.rb, line 18 def finished? ready? || failed? end
get()
click to toggle source
# File lib/cadence/workflow/future.rb, line 35 def get wait failure || result end
ready?()
click to toggle source
# File lib/cadence/workflow/future.rb, line 22 def ready? @ready end
set(result)
click to toggle source
# File lib/cadence/workflow/future.rb, line 40 def set(result) raise 'can not fulfil a failed future' if failed? @result = result @ready = true end
wait()
click to toggle source
# File lib/cadence/workflow/future.rb, line 30 def wait return if finished? context.wait_for(self) end