class IOPromise::CancelContext

Public Class Methods

context_stack() click to toggle source
# File lib/iopromise/cancel_context.rb, line 6
def context_stack
  Thread.current[:iopromise_context_stack] ||= []
end
current() click to toggle source
# File lib/iopromise/cancel_context.rb, line 10
def current
  context_stack.last
end
new(parent) click to toggle source
# File lib/iopromise/cancel_context.rb, line 34
def initialize(parent)
  parent.subscribe(self) unless parent.nil?
end
pop() click to toggle source
# File lib/iopromise/cancel_context.rb, line 20
def pop
  ctx = context_stack.pop
  ctx.cancel
  ctx
end
push() click to toggle source
# File lib/iopromise/cancel_context.rb, line 14
def push
  new_ctx = CancelContext.new(current)
  context_stack.push(new_ctx)
  new_ctx
end
with_new_context() { |ctx| ... } click to toggle source
# File lib/iopromise/cancel_context.rb, line 26
def with_new_context
  ctx = push
  yield ctx
ensure
  pop
end

Public Instance Methods

cancel() click to toggle source
# File lib/iopromise/cancel_context.rb, line 43
def cancel
  return unless defined?(@observers)
  @observers.each do |o|
    o.cancel
  end
  @observers = []
end
subscribe(observer) click to toggle source
# File lib/iopromise/cancel_context.rb, line 38
def subscribe(observer)
  @observers ||= []
  @observers.push observer
end