MediaWiki  REL1_19
LockManager Class Reference

Class for handling resource locking. More...

Inheritance diagram for LockManager:

List of all members.

Public Member Functions

 __construct (array $config)
 Construct a new instance from configuration.
 lock (array $paths, $type=self::LOCK_EX)
 Lock the resources at the given abstract paths.
 unlock (array $paths, $type=self::LOCK_EX)
 Unlock the resources at the given abstract paths.

Public Attributes

const LOCK_EX = 3
const LOCK_SH = 1
const LOCK_UW = 2

Protected Member Functions

 doLock (array $paths, $type)
 Lock resources with the given keys and lock type.
 doUnlock (array $paths, $type)
 Unlock resources with the given keys and lock type.

Static Protected Member Functions

static sha1Base36 ($path)
 Get the base 36 SHA-1 of a string, padded to 31 digits.

Protected Attributes

 $locksHeld = array()
 $lockTypeMap

Detailed Description

Class for handling resource locking.

Locks on resource keys can either be shared or exclusive.

Implementations must keep track of what is locked by this proccess in-memory and support nested locking calls (using reference counting). At least LOCK_UW and LOCK_EX must be implemented. LOCK_SH can be a no-op. Locks should either be non-blocking or have low wait timeouts.

Subclasses should avoid throwing exceptions at all costs.

Since:
1.19

Definition at line 28 of file LockManager.php.


Constructor & Destructor Documentation

LockManager::__construct ( array $  config)

Construct a new instance from configuration.

Parameters:
$configArray

Reimplemented in DBLockManager, LSLockManager, and FSLockManager.

Definition at line 49 of file LockManager.php.


Member Function Documentation

LockManager::doLock ( array $  paths,
type 
) [abstract, protected]

Lock resources with the given keys and lock type.

Parameters:
$pathsArray List of storage paths
$typeinteger LockManager::LOCK_* constant
Returns:
string

Reimplemented in NullLockManager, DBLockManager, LSLockManager, and FSLockManager.

Referenced by lock().

Here is the caller graph for this function:

LockManager::doUnlock ( array $  paths,
type 
) [abstract, protected]

Unlock resources with the given keys and lock type.

Parameters:
$pathsArray List of storage paths
$typeinteger LockManager::LOCK_* constant
Returns:
string

Reimplemented in NullLockManager, DBLockManager, LSLockManager, and FSLockManager.

Referenced by unlock().

Here is the caller graph for this function:

LockManager::lock ( array $  paths,
type = self::LOCK_EX 
) [final]

Lock the resources at the given abstract paths.

Parameters:
$pathsArray List of resource names
$typeinteger LockManager::LOCK_* constant
Returns:
Status

Definition at line 58 of file LockManager.php.

References doLock().

Referenced by ScopedLock\factory().

Here is the call graph for this function:

Here is the caller graph for this function:

static LockManager::sha1Base36 ( path) [static, final, protected]

Get the base 36 SHA-1 of a string, padded to 31 digits.

Parameters:
$pathstring
Returns:
string

Definition at line 79 of file LockManager.php.

References $path, and wfBaseConvert().

Referenced by FSLockManager\getLockPath().

Here is the call graph for this function:

Here is the caller graph for this function:

LockManager::unlock ( array $  paths,
type = self::LOCK_EX 
) [final]

Unlock the resources at the given abstract paths.

Parameters:
$pathsArray List of storage paths
$typeinteger LockManager::LOCK_* constant
Returns:
Status

Definition at line 69 of file LockManager.php.

References doUnlock().

Here is the call graph for this function:


Member Data Documentation

LockManager::$locksHeld = array() [protected]

Definition at line 37 of file LockManager.php.

LockManager::$lockTypeMap [protected]
Initial value:
 array(
                self::LOCK_SH => self::LOCK_SH,
                self::LOCK_UW => self::LOCK_EX, 
                self::LOCK_EX => self::LOCK_EX
        )

Reimplemented in MySqlLockManager, LSLockManager, and FSLockManager.

Definition at line 30 of file LockManager.php.

Definition at line 40 of file LockManager.php.

Referenced by FSLockManager\doSingleLock().


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