class Dry::Effects::Providers::Lock
Constants
- Locate
Public Instance Methods
call(backend = Undefined) { || ... }
click to toggle source
Yield the block with the handler installed
@api private
# File lib/dry/effects/providers/lock.rb, line 92 def call(backend = Undefined) backend_replace = Undefined.default(backend) do parent = ::Dry::Effects.yield(Locate) { Undefined } Undefined.map(parent, &:backend) end with_backend(backend_replace) do yield ensure owned.each { |handle| unlock(handle) } end end
locate()
click to toggle source
Locate
handler in the stack
@return [Provider] @api private
# File lib/dry/effects/providers/lock.rb, line 85 def locate self end
lock(key, meta = Undefined)
click to toggle source
# File lib/dry/effects/providers/lock.rb, line 63 def lock(key, meta = Undefined) locked = backend.lock(key, meta) owned << locked if locked locked end
locked?(key)
click to toggle source
# File lib/dry/effects/providers/lock.rb, line 69 def locked?(key) backend.locked?(key) end
meta(key)
click to toggle source
# File lib/dry/effects/providers/lock.rb, line 77 def meta(key) backend.meta(key) end
owned()
click to toggle source
# File lib/dry/effects/providers/lock.rb, line 118 def owned @owned ||= [] end
represent()
click to toggle source
Calls superclass method
# File lib/dry/effects/providers/lock.rb, line 122 def represent if owned.empty? super else "lock[owned=#{owned.size}]" end end
unlock(handle)
click to toggle source
# File lib/dry/effects/providers/lock.rb, line 73 def unlock(handle) backend.unlock(handle) end
with_backend(backend) { || ... }
click to toggle source
# File lib/dry/effects/providers/lock.rb, line 105 def with_backend(backend) if Undefined.equal?(backend) yield else begin before, @backend = @backend, backend yield ensure @backend = before end end end