Completed
Branch master (174b3a)
by
unknown
26:51
created

LBFactorySingle::newFromConnection()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 2
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
 * Simple generator of database connections that always returns the same object.
4
 *
5
 * This program is free software; you can redistribute it and/or modify
6
 * it under the terms of the GNU General Public License as published by
7
 * the Free Software Foundation; either version 2 of the License, or
8
 * (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License along
16
 * with this program; if not, write to the Free Software Foundation, Inc.,
17
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18
 * http://www.gnu.org/copyleft/gpl.html
19
 *
20
 * @file
21
 * @ingroup Database
22
 */
23
24
/**
25
 * An LBFactory class that always returns a single database object.
26
 */
27
class LBFactorySingle extends LBFactory {
28
	/** @var LoadBalancerSingle */
29
	private $lb;
30
31
	/**
32
	 * @param array $conf An associative array with one member:
33
	 *  - connection: The IDatabase connection object
34
	 */
35
	public function __construct( array $conf ) {
36
		parent::__construct( $conf );
37
38
		if ( !isset( $conf['connection'] ) ) {
39
			throw new InvalidArgumentException( "Missing 'connection' argument." );
40
		}
41
42
		$this->lb = new LoadBalancerSingle( array_merge( $this->baseLoadBalancerParams(), $conf ) );
43
	}
44
45
	/**
46
	 * @param IDatabase $db Live connection handle
47
	 * @param array $params Parameter map to LBFactorySingle::__constructs()
48
	 * @return LBFactorySingle
49
	 * @since 1.28
50
	 */
51
	public static function newFromConnection( IDatabase $db, array $params = [] ) {
52
		return new static( [ 'connection' => $db ] + $params );
53
	}
54
55
	/**
56
	 * @param bool|string $wiki
57
	 * @return LoadBalancerSingle
58
	 */
59
	public function newMainLB( $wiki = false ) {
60
		return $this->lb;
61
	}
62
63
	/**
64
	 * @param bool|string $wiki
65
	 * @return LoadBalancerSingle
66
	 */
67
	public function getMainLB( $wiki = false ) {
68
		return $this->lb;
69
	}
70
71
	/**
72
	 * @param string $cluster External storage cluster, or false for core
73
	 * @param bool|string $wiki Wiki ID, or false for the current wiki
74
	 * @return LoadBalancerSingle
75
	 */
76
	protected function newExternalLB( $cluster, $wiki = false ) {
77
		return $this->lb;
78
	}
79
80
	/**
81
	 * @param string $cluster External storage cluster, or false for core
82
	 * @param bool|string $wiki Wiki ID, or false for the current wiki
83
	 * @return LoadBalancerSingle
84
	 */
85
	public function getExternalLB( $cluster, $wiki = false ) {
86
		return $this->lb;
87
	}
88
89
	/**
90
	 * @param string|callable $callback
91
	 * @param array $params
92
	 */
93
	public function forEachLB( $callback, array $params = [] ) {
94
		call_user_func_array( $callback, array_merge( [ $this->lb ], $params ) );
95
	}
96
}
97