]> scripts.mit.edu Git - autoinstalls/mediawiki.git/blobdiff - includes/db/LBFactory_Single.php
MediaWiki 1.17.0
[autoinstalls/mediawiki.git] / includes / db / LBFactory_Single.php
diff --git a/includes/db/LBFactory_Single.php b/includes/db/LBFactory_Single.php
new file mode 100644 (file)
index 0000000..25acdc5
--- /dev/null
@@ -0,0 +1,57 @@
+<?php
+
+/**
+ * An LBFactory class that always returns a single database object.
+ */
+class LBFactory_Single extends LBFactory {
+       protected $lb;
+
+       /**
+        * @param $conf An associative array with one member:
+        *  - connection: The DatabaseBase connection object
+        */
+       function __construct( $conf ) {
+               $this->lb = new LoadBalancer_Single( $conf );
+       }
+
+       function newMainLB( $wiki = false ) {
+               return $this->lb;
+       }
+
+       function getMainLB( $wiki = false ) {
+               return $this->lb;
+       }
+
+       function newExternalLB( $cluster, $wiki = false ) {
+               return $this->lb;
+       }
+
+       function &getExternalLB( $cluster, $wiki = false ) {
+               return $this->lb;
+       }
+
+       function forEachLB( $callback, $params = array() ) {
+               call_user_func_array( $callback, array_merge( array( $this->lb ), $params ) );
+       }
+}
+
+/**
+ * Helper class for LBFactory_Single.
+ */
+class LoadBalancer_Single extends LoadBalancer {
+       var $db;
+
+       function __construct( $params ) {
+               $this->db = $params['connection'];
+               parent::__construct( array( 'servers' => array( array(
+                       'type' => $this->db->getType(),
+                       'host' => $this->db->getServer(),
+                       'dbname' => $this->db->getDBname(),
+                       'load' => 1,
+               ) ) ) );
+       }
+
+       function reallyOpenConnection( $server, $dbNameOverride = false ) {
+               return $this->db;
+       }
+}