class Osbourne::Locks::Memory
Public Class Methods
semaphore()
click to toggle source
# File lib/osbourne/locks/memory.rb, line 15 def semaphore @semaphore ||= Mutex.new end
store()
click to toggle source
# File lib/osbourne/locks/memory.rb, line 11 def store @store ||= {} end
Protected Instance Methods
lock(key, ttl)
click to toggle source
# File lib/osbourne/locks/memory.rb, line 22 def lock(key, ttl) reap store do |store| if store.key?(key) false else store[key] = Time.current + ttl true end end end
lock!(key, ttl)
click to toggle source
# File lib/osbourne/locks/memory.rb, line 35 def lock!(key, ttl) reap store do |store| store[key] = Time.current + ttl end end
unlock!(key)
click to toggle source
# File lib/osbourne/locks/memory.rb, line 43 def unlock!(key) store do |store| store.delete(key) end end
Private Instance Methods
reap()
click to toggle source
# File lib/osbourne/locks/memory.rb, line 57 def reap store do |store| now = Time.current store.delete_if {|_, expires_at| expires_at <= now } end end
semaphore()
click to toggle source
# File lib/osbourne/locks/memory.rb, line 64 def semaphore self.class.semaphore end
store() { |class.store| ... }
click to toggle source
# File lib/osbourne/locks/memory.rb, line 51 def store semaphore.synchronize do yield self.class.store end end