class Debtor

Public Class Methods

new() click to toggle source
# File lib/arboretum/debtor.rb, line 15
def initialize
  @resource = nil
  @locked = true
  @creditors = Array.new
end

Public Instance Methods

free() click to toggle source
# File lib/arboretum/debtor.rb, line 44
def free
  @locked = false
  @creditors.each {|c| c.resume }
  @creditors = Array.new
end
free?() click to toggle source
# File lib/arboretum/debtor.rb, line 41
def free?
  !@locked
end
locked?() click to toggle source
# File lib/arboretum/debtor.rb, line 38
def locked?
  @locked
end
resource() click to toggle source
# File lib/arboretum/debtor.rb, line 24
def resource
  begin
    if locked?
      @creditors << Fiber.current
      Fiber.yield
    end
  rescue FiberError
    puts "Warning: Tried to yield the root Fiber on a locked resource call. Returning resource anyways..."
  end
  @resource
end
resource!() click to toggle source
# File lib/arboretum/debtor.rb, line 35
def resource!
  @resource
end
set(rsc)
Alias for: set_resource
set_resource(rsc) click to toggle source
# File lib/arboretum/debtor.rb, line 20
def set_resource(rsc)
  @resource = rsc
end
Also aliased as: set