LockFactory::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 2
c 1
b 0
f 0
dl 0
loc 6
rs 10
cc 1
nc 1
nop 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Jellyfish\LockSymfony;
6
7
use Jellyfish\Lock\LockFactoryInterface;
8
use Jellyfish\Lock\LockIdentifierGeneratorInterface;
9
use Jellyfish\Lock\LockInterface;
10
use Symfony\Component\Lock\Factory as SymfonyLockFactory;
11
12
class LockFactory implements LockFactoryInterface
13
{
14
    /**
15
     * @var \Symfony\Component\Lock\Factory
16
     */
17
    protected $symfonyLockFactory;
18
19
    /**
20
     * @var \Jellyfish\Lock\LockIdentifierGeneratorInterface
21
     */
22
    protected $lockIdentifierGenerator;
23
24
    /**
25
     * @param \Symfony\Component\Lock\Factory $symfonyLockFactory
26
     * @param \Jellyfish\Lock\LockIdentifierGeneratorInterface $lockIdentifierGenerator
27
     */
28
    public function __construct(
29
        SymfonyLockFactory $symfonyLockFactory,
30
        LockIdentifierGeneratorInterface $lockIdentifierGenerator
31
    ) {
32
        $this->symfonyLockFactory = $symfonyLockFactory;
33
        $this->lockIdentifierGenerator = $lockIdentifierGenerator;
34
    }
35
36
    /**
37
     * @param array $identifierParts
38
     * @param float $ttl
39
     *
40
     * @return \Jellyfish\Lock\LockInterface
41
     */
42
    public function create(array $identifierParts, float $ttl): LockInterface
43
    {
44
        $identifier = $this->lockIdentifierGenerator->generate($identifierParts);
45
46
        $symfonyLock = $this->symfonyLockFactory->createLock($identifier, $ttl, false);
47
48
        return new Lock($symfonyLock);
49
    }
50
}
51