class DLM
Public Class Methods
new(redis=Redis.new)
click to toggle source
# File lib/dlm.rb, line 7 def initialize(redis=Redis.new) @redis = redis end
Public Instance Methods
lock(what, block = false, lockinfo = 1)
click to toggle source
# File lib/dlm.rb, line 11 def lock(what, block = false, lockinfo = 1) self.wait(what) if block ret = @redis.set("dlm_#{what}", lockinfo, :nx => true) raise DLMLockTaken, "Lock is already taken for #{what}: dlm_#{what}" unless ret ret end
lockinfo(what)
click to toggle source
# File lib/dlm.rb, line 24 def lockinfo(what) @redis.get("dlm_#{what}") end
unlock(what)
click to toggle source
# File lib/dlm.rb, line 28 def unlock(what) @redis.del("dlm_#{what}") end
unlockall()
click to toggle source
# File lib/dlm.rb, line 32 def unlockall keys = @redis.keys("dlm_*") @redis.del(keys) unless keys.empty? end
wait(what)
click to toggle source
# File lib/dlm.rb, line 18 def wait(what) while ! @redis.get("dlm_#{what}").nil? sleep(0.1) end end