composer: * mediawiki/mediawiki-codesniffer: 36.0.0 → 37.0.0 The following sniffs now pass and were enabled: * Generic.ControlStructures.InlineControlStructure * MediaWiki.PHPUnit.AssertCount.NotUsed npm: * svgo: 2.3.0 → 2.3.1 * https://npmjs.com/advisories/1754 (CVE-2021-33587) Change-Id: I2a9bbee2fecbf7259876d335f565ece4b3622426
54 lines
1.3 KiB
PHP
54 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace MediaWiki\FileBackend\LockManager;
|
|
|
|
use LockManagerGroup;
|
|
use Wikimedia\Rdbms\LBFactory;
|
|
|
|
/**
|
|
* Service to construct LockManagerGroups.
|
|
*/
|
|
class LockManagerGroupFactory {
|
|
/** @var string */
|
|
private $defaultDomain;
|
|
|
|
/** @var array */
|
|
private $lockManagerConfigs;
|
|
|
|
/** @var LBFactory */
|
|
private $lbFactory;
|
|
|
|
/** @var LockManagerGroup[] (domain => LockManagerGroup) */
|
|
private $instances = [];
|
|
|
|
/**
|
|
* Do not call directly, use MediaWikiServices.
|
|
*
|
|
* @param string $defaultDomain
|
|
* @param array $lockManagerConfigs In format of $wgLockManagers
|
|
* @param LBFactory $lbFactory
|
|
*/
|
|
public function __construct( $defaultDomain, array $lockManagerConfigs, LBFactory $lbFactory ) {
|
|
$this->defaultDomain = $defaultDomain;
|
|
$this->lockManagerConfigs = $lockManagerConfigs;
|
|
$this->lbFactory = $lbFactory;
|
|
}
|
|
|
|
/**
|
|
* @param string|null|false $domain Domain (usually wiki ID). false for the default (normally
|
|
* the current wiki's domain).
|
|
* @return LockManagerGroup
|
|
*/
|
|
public function getLockManagerGroup( $domain = false ): LockManagerGroup {
|
|
if ( $domain === false || $domain === null ) {
|
|
$domain = $this->defaultDomain;
|
|
}
|
|
|
|
if ( !isset( $this->instances[$domain] ) ) {
|
|
$this->instances[$domain] =
|
|
new LockManagerGroup( $domain, $this->lockManagerConfigs, $this->lbFactory );
|
|
}
|
|
|
|
return $this->instances[$domain];
|
|
}
|
|
}
|