Passed
Push — master ( 9a5374...9213a8 )
by Kevin
02:12
created

Schedule/Extension/Handler/SingleServerHandler.php (1 issue)

Labels
Severity
1
<?php
2
3
namespace Zenstruck\ScheduleBundle\Schedule\Extension\Handler;
4
5
use Symfony\Component\Lock\LockFactory;
6
use Zenstruck\ScheduleBundle\Event\BeforeScheduleEvent;
7
use Zenstruck\ScheduleBundle\Event\BeforeTaskEvent;
8
use Zenstruck\ScheduleBundle\Schedule\Exception\SkipSchedule;
9
use Zenstruck\ScheduleBundle\Schedule\Exception\SkipTask;
10
use Zenstruck\ScheduleBundle\Schedule\Extension;
11
use Zenstruck\ScheduleBundle\Schedule\Extension\ExtensionHandler;
12
use Zenstruck\ScheduleBundle\Schedule\Extension\SingleServerExtension;
13
14
/**
15
 * @author Kevin Bond <[email protected]>
16
 */
17
final class SingleServerHandler extends ExtensionHandler
18
{
19
    private $lockFactory;
20
21 4
    public function __construct(LockFactory $lockFactory)
22
    {
23 4
        $this->lockFactory = $lockFactory;
24 4
    }
25
26
    /**
27
     * @param SingleServerExtension $extension
28
     */
29 2
    public function filterSchedule(BeforeScheduleEvent $event, Extension $extension): void
30
    {
31 2
        if (!$extension->aquireLock($this->lockFactory, $event->getSchedule()->getId(), $event->getStartTime())) {
0 ignored issues
show
The method aquireLock() does not exist on Zenstruck\ScheduleBundle\Schedule\Extension. It seems like you code against a sub-type of Zenstruck\ScheduleBundle\Schedule\Extension such as Zenstruck\ScheduleBundle...n\SingleServerExtension. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

31
        if (!$extension->/** @scrutinizer ignore-call */ aquireLock($this->lockFactory, $event->getSchedule()->getId(), $event->getStartTime())) {
Loading history...
32 1
            throw new SkipSchedule('Schedule running on another server.');
33
        }
34 2
    }
35
36
    /**
37
     * @param SingleServerExtension $extension
38
     */
39 2
    public function filterTask(BeforeTaskEvent $event, Extension $extension): void
40
    {
41 2
        if (!$extension->aquireLock($this->lockFactory, $event->getTask()->getId(), $event->getScheduleStartTime())) {
42 1
            throw new SkipTask('Task running on another server.');
43
        }
44 2
    }
45
46 2
    public function supports(Extension $extension): bool
47
    {
48 2
        return $extension instanceof SingleServerExtension;
49
    }
50
}
51