class EMPromise::Trampoline

Attributes

ready[RW]

Public Class Methods

new() click to toggle source
# File lib/em_promise.rb, line 11
def initialize
        @ready = true
        @fiber = Fiber.new do |blk|
                Thread.current[:_em_promise_trampoline] = self
                loop do
                        result = blk.call
                        self.ready = true
                        blk = Fiber.yield result
                        self.ready = false
                end
        end
end

Public Instance Methods

submit(&blk) click to toggle source
# File lib/em_promise.rb, line 24
def submit(&blk)
        EM.next_tick do
                if ready
                        @fiber.resume(blk)
                else
                        submit(&blk)
                end
        end
end