3 namespace MediaWiki\FileBackend\LockManager
;
6 use Wikimedia\Rdbms\LBFactory
;
9 * Service to construct LockManagerGroups.
11 class LockManagerGroupFactory
{
13 private $defaultDomain;
16 private $lockManagerConfigs;
21 /** @var LockManagerGroup[] (domain => LockManagerGroup) */
22 private $instances = [];
25 * Do not call directly, use MediaWikiServices.
27 * @param string $defaultDomain
28 * @param array $lockManagerConfigs In format of $wgLockManagers
29 * @param LBFactory $lbFactory
31 public function __construct( $defaultDomain, array $lockManagerConfigs, LBFactory
$lbFactory ) {
32 $this->defaultDomain
= $defaultDomain;
33 $this->lockManagerConfigs
= $lockManagerConfigs;
34 $this->lbFactory
= $lbFactory;
38 * @param string|null|false $domain Domain (usually wiki ID). false for the default (normally
39 * the current wiki's domain).
40 * @return LockManagerGroup
42 public function getLockManagerGroup( $domain = false ) : LockManagerGroup
{
43 if ( $domain === false ||
$domain === null ) {
44 $domain = $this->defaultDomain
;
47 if ( !isset( $this->instances
[$domain] ) ) {
48 $this->instances
[$domain] =
49 new LockManagerGroup( $domain, $this->lockManagerConfigs
, $this->lbFactory
);
52 return $this->instances
[$domain];