Module: Sequel::Postgres::PgAdvisoryLocking

Defined in:
lib/sequel/extensions/pg_advisory_locking.rb

Instance Method Summary collapse

Instance Method Details

#try_advisory_lock(id, opts = {}, &block) ⇒ Object



14
15
16
17
18
19
# File 'lib/sequel/extensions/pg_advisory_locking.rb', line 14

def try_advisory_lock(id, opts = {}, &block)
  exclusive = opts.fetch(:exclusive, true)
  lockfn = exclusive ? :pg_try_advisory_lock : :pg_try_advisory_lock_shared
  unlockfn = exclusive ? :pg_advisory_unlock : :pg_advisory_unlock_shared
  yield_with_advisory_lock(id, lockfn, unlockfn, &block)
end

#with_advisory_lock(id, opts = {}, &block) ⇒ Object



7
8
9
10
11
12
# File 'lib/sequel/extensions/pg_advisory_locking.rb', line 7

def with_advisory_lock(id, opts = {}, &block)
  exclusive = opts.fetch(:exclusive, true)
  lockfn = exclusive ? :pg_advisory_lock : :pg_advisory_lock_shared
  unlockfn = exclusive ? :pg_advisory_unlock : :pg_advisory_unlock_shared
  yield_with_advisory_lock(id, lockfn, unlockfn, &block)
end