Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
85.71% covered (warning)
85.71%
12 / 14
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
NullLockManager
85.71% covered (warning)
85.71%
12 / 14
0.00% covered (danger)
0.00%
0 / 2
8.19
0.00% covered (danger)
0.00%
0 / 1
 doLock
80.00% covered (warning)
80.00%
4 / 5
0.00% covered (danger)
0.00%
0 / 1
3.07
 doUnlock
88.89% covered (warning)
88.89%
8 / 9
0.00% covered (danger)
0.00%
0 / 1
5.03
1<?php
2/**
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation; either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License along
14 * with this program; if not, write to the Free Software Foundation, Inc.,
15 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 * http://www.gnu.org/copyleft/gpl.html
17 *
18 * @file
19 */
20
21/**
22 * Simple lock management based on in-process reference counting.
23 *
24 * @since 1.19
25 * @ingroup LockManager
26 */
27class NullLockManager extends LockManager {
28    protected function doLock( array $paths, $type ) {
29        foreach ( $paths as $path ) {
30            if ( isset( $this->locksHeld[$path][$type] ) ) {
31                ++$this->locksHeld[$path][$type];
32            } else {
33                $this->locksHeld[$path][$type] = 1;
34            }
35        }
36
37        return StatusValue::newGood();
38    }
39
40    protected function doUnlock( array $paths, $type ) {
41        $status = StatusValue::newGood();
42
43        foreach ( $paths as $path ) {
44            if ( isset( $this->locksHeld[$path][$type] ) ) {
45                if ( --$this->locksHeld[$path][$type] <= 0 ) {
46                    unset( $this->locksHeld[$path][$type] );
47                    if ( !$this->locksHeld[$path] ) {
48                        unset( $this->locksHeld[$path] ); // clean up
49                    }
50                }
51            } else {
52                $status->warning( 'lockmanager-notlocked', $path );
53            }
54        }
55
56        return $status;
57    }
58}