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_resource(rsc)
click to toggle source
# File lib/arboretum/debtor.rb, line 20 def set_resource(rsc) @resource = rsc end
Also aliased as: set