class BubbleWrap::Reactor::ThreadAwareDeferrable

Public Instance Methods

cache_block_queue(&blk) click to toggle source
# File motion/reactor/thread_aware_deferrable.rb, line 29
def cache_block_queue(&blk)
  return unless blk
  @queue_cache ||= {}
  @queue_cache[blk.object_id] = Dispatch::Queue.current
end
callback(&blk) click to toggle source

need to store the the queue in callback / errback

# File motion/reactor/thread_aware_deferrable.rb, line 8
def callback(&blk)
  return unless blk
  cache_block_queue(&blk)
  super(&blk)
end
errback(&blk) click to toggle source
Calls superclass method BubbleWrap::Reactor::Deferrable#errback
# File motion/reactor/thread_aware_deferrable.rb, line 14
def errback(&blk)
  return unless blk
  cache_block_queue(&blk)
  super(&blk)
end
execute_block(&blk) click to toggle source
# File motion/reactor/thread_aware_deferrable.rb, line 20
def execute_block(&blk)
  return unless blk
  queue = @queue_cache.delete(blk.object_id)
  return unless queue
  queue.async do
    blk.call(*@deferred_args)
  end
end