Sha256: c61352df7e4887cf9f4a7e911a3b466bc974bb1cfe1b5e9867592ce72786c19f

Contents?: true

Size: 494 Bytes

Versions: 2

Compression:

Stored size: 494 Bytes

Contents

module Elevate
  class Promise
    OUTSTANDING = 0
    FULFILLED = 1

    def initialize
      @lock = NSConditionLock.alloc.initWithCondition(OUTSTANDING)
      @result = nil
    end

    def get
      result = nil

      @lock.lockWhenCondition(FULFILLED)
      result = @result
      @lock.unlockWithCondition(FULFILLED)

      result
    end

    def set(result)
      @lock.lockWhenCondition(OUTSTANDING)
      @result = result
      @lock.unlockWithCondition(FULFILLED)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
elevate-0.3.1 lib/elevate/promise.rb
elevate-0.3 lib/elevate/promise.rb