f80aa4bc2f4065f2ba91ddb14d17a0827be76f88
[lhc/web/wiklou.git] / includes / db / LBFactory_Single.php
1 <?php
2
3 /**
4 * An LBFactory class that always returns a single database object.
5 */
6 class LBFactory_Single extends LBFactory {
7 protected $lb;
8
9 /**
10 * @param $conf array An associative array with one member:
11 * - connection: The DatabaseBase connection object
12 */
13 function __construct( $conf ) {
14 $this->lb = new LoadBalancer_Single( $conf );
15 }
16
17 /**
18 * @param $wiki bool|string
19 *
20 * @return LoadBalancer_Single
21 */
22 function newMainLB( $wiki = false ) {
23 return $this->lb;
24 }
25
26 /**
27 * @param $wiki bool|string
28 *
29 * @return LoadBalancer_Single
30 */
31 function getMainLB( $wiki = false ) {
32 return $this->lb;
33 }
34
35 /**
36 * @param $cluster
37 * @param $wiki bool|string
38 *
39 * @return LoadBalancer_Single
40 */
41 function newExternalLB( $cluster, $wiki = false ) {
42 return $this->lb;
43 }
44
45 /**
46 * @param $cluster
47 * @param $wiki bool|string
48 *
49 * @return LoadBalancer_Single
50 */
51 function &getExternalLB( $cluster, $wiki = false ) {
52 return $this->lb;
53 }
54
55 /**
56 * @param $callback string|array
57 * @param $params array
58 */
59 function forEachLB( $callback, $params = array() ) {
60 call_user_func_array( $callback, array_merge( array( $this->lb ), $params ) );
61 }
62 }
63
64 /**
65 * Helper class for LBFactory_Single.
66 */
67 class LoadBalancer_Single extends LoadBalancer {
68
69 /**
70 * @var DatabaseBase
71 */
72 var $db;
73
74 /**
75 * @param $params array
76 */
77 function __construct( $params ) {
78 $this->db = $params['connection'];
79 parent::__construct( array( 'servers' => array( array(
80 'type' => $this->db->getType(),
81 'host' => $this->db->getServer(),
82 'dbname' => $this->db->getDBname(),
83 'load' => 1,
84 ) ) ) );
85 }
86
87 /**
88 *
89 * @param $server string
90 * @param $dbNameOverride bool
91 *
92 * @return DatabaseBase
93 */
94 function reallyOpenConnection( $server, $dbNameOverride = false ) {
95 return $this->db;
96 }
97 }