class Atomy::CodeLoader::RequireRequest

Attributes

module[RW]

Public Class Methods

new(map, key) click to toggle source
# File lib/atomy/codeloader.rb, line 24
def initialize(map, key)
  @map = map
  @key = key
  @for = nil
  @module = nil
  @loaded = false
  @remove = true
end

Public Instance Methods

current_thread?() click to toggle source
# File lib/atomy/codeloader.rb, line 40
def current_thread?
  @for == Thread.current
end
lock() click to toggle source
# File lib/atomy/codeloader.rb, line 44
def lock
  Rubinius.lock(self)
end
passed!() click to toggle source
# File lib/atomy/codeloader.rb, line 68
def passed!
  @loaded = true
end
remove!() click to toggle source
# File lib/atomy/codeloader.rb, line 72
def remove!
  Rubinius.synchronize(Lock) do
    if @loaded || @remove
      @map.delete(@key)
    end
  end

  unlock
end
take!() click to toggle source
# File lib/atomy/codeloader.rb, line 35
def take!
  lock
  @for = Thread.current
end
unlock() click to toggle source
# File lib/atomy/codeloader.rb, line 48
def unlock
  Rubinius.unlock(self)
end
wait() click to toggle source
# File lib/atomy/codeloader.rb, line 52
def wait
  Rubinius.synchronize(Lock) do
    @remove = false
  end

  take!

  Rubinius.synchronize(Lock) do
    if @loaded
      @map.delete @key
    end
  end

  @loaded
end