+
+/**
+ * Helper class to handle automatically marking connectons as reusable (via RAII pattern)
+ *
+ * @ingroup Database
+ * @since 1.22
+ */
+class DBConnRef {
+ /** @var LoadBalancer */
+ protected $lb;
+ /** @var DatabaseBase */
+ protected $conn;
+
+ /**
+ * @param $lb LoadBalancer
+ * @param $conn DatabaseBase
+ */
+ public function __construct( LoadBalancer $lb, DatabaseBase $conn ) {
+ $this->lb = $lb;
+ $this->conn = $conn;
+ }
+
+ public function __call( $name, $arguments ) {
+ return call_user_func_array( array( $this->conn, $name ), $arguments );
+ }
+
+ function __destruct() {
+ $this->lb->reuseConnection( $this->conn );
+ }
+}