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