Completed
Push — add/masterbar--my-home ( 5c5e9c...8732fd )
by
unknown
10:54 queued 04:17
created

Lock   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 53
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Importance

Changes 0
Metric Value
dl 0
loc 53
rs 10
c 0
b 0
f 0
wmc 4
lcom 0
cbo 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A attempt() 0 12 3
A remove() 0 3 1
1
<?php
2
/**
3
 * Lock class.
4
 *
5
 * @package automattic/jetpack-sync
6
 */
7
8
namespace Automattic\Jetpack\Sync;
9
10
/**
11
 * Lock class
12
 */
13
class Lock {
14
	/**
15
	 * Prefix of the blog lock transient.
16
	 *
17
	 * @access public
18
	 *
19
	 * @var string
20
	 */
21
	const LOCK_PREFIX = 'jp_sync_lock_';
22
23
	/**
24
	 * Default Lifetime of the lock.
25
	 *
26
	 * @access public
27
	 *
28
	 * @var int
29
	 */
30
	const LOCK_TRANSIENT_EXPIRY = 15; // Seconds.
31
32
	/**
33
	 * Attempt to lock.
34
	 *
35
	 * @access public
36
	 *
37
	 * @param string $name lock name.
38
	 * @param int    $expiry lock duration in seconds.
39
	 *
40
	 * @return boolean True if succeeded, false otherwise.
41
	 */
42
	public function attempt( $name, $expiry = self::LOCK_TRANSIENT_EXPIRY ) {
43
		$name        = self::LOCK_PREFIX . $name;
44
		$locked_time = get_option( $name );
45
		if ( $locked_time ) {
46
			if ( microtime( true ) < $locked_time ) {
47
				return false;
48
			}
49
		}
50
		update_option( $name, microtime( true ) + $expiry );
51
52
		return true;
53
	}
54
55
	/**
56
	 * Remove the lock.
57
	 *
58
	 * @access public
59
	 *
60
	 * @param string $name lock name.
61
	 */
62
	public function remove( $name ) {
63
		delete_option( self::LOCK_PREFIX . $name );
64
	}
65
}
66