Moodle APIs  3.8
Moodle 3.8.6 (Build: 20201109)
Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
core\lock\postgres_lock_factory Class Reference
Inheritance diagram for core\lock\postgres_lock_factory:
core\lock\lock_factory

Public Member Functions

 __construct ($type)
 Almighty constructor. More...
 
 auto_release ()
 Auto release any open locks on shutdown. More...
 
 extend_lock (lock $lock, $maxlifetime=86400)
 Extend a lock that was previously obtained with @lock. More...
 
 get_lock ($resource, $timeout, $maxlifetime=86400)
 Create and get a lock. More...
 
 is_available ()
 Is available. More...
 
 release_lock (lock $lock)
 Release a lock that was previously obtained with @lock. More...
 
 supports_auto_release ()
 Will this lock type will be automatically released when a process ends. More...
 
 supports_recursion ()
 Multiple locks for the same resource can be held by a single process. More...
 
 supports_timeout ()
 Return information about the blocking behaviour of the lock type on this platform. More...
 

Protected Member Functions

 get_index_from_key ($key)
 This function generates the unique index for a specific lock key. More...
 
 get_unique_db_instance_id ()
 Calculate a unique instance id based on the database name and prefix. More...
 

Protected Attributes

moodle_database $db
 $db Hold a reference to the global $DB
 
int $dblockid = -1
 $dblockid - used as a namespace for these types of locks (separate from session locks)
 
array $openlocks = array()
 $openlocks - List of held locks - used by auto-release
 
string $type
 $type Used to prefix lock keys
 

Static Protected Attributes

static array $lockidcache = array()
 $lockidcache - static cache for string -> int conversions required for pg advisory locks.
 

Constructor & Destructor Documentation

◆ __construct()

core\lock\postgres_lock_factory::__construct (   $type)

Almighty constructor.

Parameters
string$type- Used to prefix lock keys.

Implements core\lock\lock_factory.

Member Function Documentation

◆ auto_release()

core\lock\postgres_lock_factory::auto_release ( )

Auto release any open locks on shutdown.

This is required, because we may be using persistent DB connections.

◆ extend_lock()

core\lock\postgres_lock_factory::extend_lock ( lock  $lock,
  $maxlifetime = 86400 
)

Extend a lock that was previously obtained with @lock.

Parameters
lock$lock- a lock obtained from this factory.
int$maxlifetime- the new lifetime for the lock (in seconds).
Return values
boolean- true if the lock was extended.

Implements core\lock\lock_factory.

◆ get_index_from_key()

core\lock\postgres_lock_factory::get_index_from_key (   $key)
protected

This function generates the unique index for a specific lock key.

Once an index is assigned to a key, it never changes - so this is statically cached.

Parameters
string$key
Return values
int
Exceptions
moodle_exception

◆ get_lock()

core\lock\postgres_lock_factory::get_lock (   $resource,
  $timeout,
  $maxlifetime = 86400 
)

Create and get a lock.

Parameters
string$resource- The identifier for the lock. Should use frankenstyle prefix.
int$timeout- The number of seconds to wait for a lock before giving up.
int$maxlifetime- Unused by this lock type.
Return values
boolean- true if a lock was obtained.

Implements core\lock\lock_factory.

◆ get_unique_db_instance_id()

core\lock\postgres_lock_factory::get_unique_db_instance_id ( )
protected

Calculate a unique instance id based on the database name and prefix.

Return values
int.

◆ is_available()

core\lock\postgres_lock_factory::is_available ( )

Is available.

Return values
boolean- True if this lock type is available in this environment.

Implements core\lock\lock_factory.

◆ release_lock()

core\lock\postgres_lock_factory::release_lock ( lock  $lock)

Release a lock that was previously obtained with @lock.

Parameters
lock$lock- a lock obtained from this factory.
Return values
boolean- true if the lock is no longer held (including if it was never held).

Implements core\lock\lock_factory.

◆ supports_auto_release()

core\lock\postgres_lock_factory::supports_auto_release ( )

Will this lock type will be automatically released when a process ends.

Return values
boolean- Via shutdown handler.

Implements core\lock\lock_factory.

◆ supports_recursion()

core\lock\postgres_lock_factory::supports_recursion ( )

Multiple locks for the same resource can be held by a single process.

Return values
boolean- Defer to the DB driver.

Implements core\lock\lock_factory.

◆ supports_timeout()

core\lock\postgres_lock_factory::supports_timeout ( )

Return information about the blocking behaviour of the lock type on this platform.

Return values
boolean- Defer to the DB driver.

Implements core\lock\lock_factory.


The documentation for this class was generated from the following file: