baseLoadBalancerParams(), [ 'connection' => $conn ] ) ); } else { $mainLB = new LoadBalancerDisabled( $this->baseLoadBalancerParams() ); } $this->initLoadBalancer( $mainLB ); $this->mainLB = $mainLB; } /** * @param IDatabase $db Live connection handle * @param array $params Parameter map to LBFactorySingle::__construct() * @return LBFactorySingle * @since 1.28 */ public static function newFromConnection( IDatabase $db, array $params = [] ) { return new static( array_merge( [ 'localDomain' => $db->getDomainID() ], $params, [ 'connection' => $db ] ) ); } /** * @param array $params Parameter map to LBFactorySingle::__construct() * @return LBFactorySingle * @since 1.40 */ public static function newDisabled( array $params = [] ) { return new static( array_merge( $params, [ 'connection' => null ] ) ); } public function newMainLB( $domain = false ): ILoadBalancerForOwner { // @phan-suppress-previous-line PhanPluginNeverReturnMethod throw new BadMethodCallException( "Method is not supported." ); } public function getMainLB( $domain = false ): ILoadBalancer { return $this->mainLB; } public function newExternalLB( $cluster ): ILoadBalancerForOwner { // @phan-suppress-previous-line PhanPluginNeverReturnMethod throw new BadMethodCallException( "Method is not supported." ); } public function getExternalLB( $cluster ): ILoadBalancer { // @phan-suppress-previous-line PhanPluginNeverReturnMethod throw new BadMethodCallException( "Method is not supported." ); } public function getAllMainLBs(): array { return [ self::CLUSTER_MAIN_DEFAULT => $this->mainLB ]; } public function getAllExternalLBs(): array { return []; } protected function getLBsForOwner() { if ( $this->mainLB !== null ) { yield $this->mainLB; } } public function __destruct() { // do nothing since the connection was injected } }