Total Complexity | 6 |
Total Lines | 35 |
Duplicated Lines | 0 % |
Changes | 0 |
1 | <?php |
||
11 | abstract class LockingExtension |
||
12 | { |
||
13 | private $ttl; |
||
14 | |||
15 | /** @var LockInterface|null */ |
||
16 | private $lock; |
||
17 | |||
18 | public function __construct(int $ttl) |
||
19 | { |
||
20 | $this->ttl = $ttl; |
||
21 | } |
||
22 | |||
23 | final public function acquireLock(LockFactory $lockFactory, string $mutex): bool |
||
24 | { |
||
25 | if (null !== $this->lock) { |
||
26 | throw new \LogicException('A lock is already in place.'); |
||
27 | } |
||
28 | |||
29 | $this->lock = $lockFactory->createLock('symfony-schedule-'.$mutex, $this->ttl); |
||
30 | |||
31 | if ($this->lock->acquire()) { |
||
32 | return true; |
||
33 | } |
||
34 | |||
35 | $this->lock = null; |
||
36 | |||
37 | return false; |
||
38 | } |
||
39 | |||
40 | final public function releaseLock(): void |
||
46 | } |
||
47 | } |
||
48 | } |
||
49 |