Completed
Push — master ( c76232...ce4950 )
by Matthew
27:26 queued 01:28
created

StallableJobManager::getDefaultMaxStalls()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
crap 1
1
<?php
2
3
namespace Dtc\QueueBundle\Manager;
4
5
use Dtc\QueueBundle\Model\RetryableJob;
6
use Dtc\QueueBundle\Model\Job;
7
use Dtc\QueueBundle\Model\StallableJob;
8
9
abstract class StallableJobManager extends PriorityJobManager
10
{
11
    protected $defaultMaxStalls;
12
13
    abstract protected function stallableSave(StallableJob $job);
14
15 43
    protected function prioritySave(Job $job)
16
    {
17 43
        if (!$job instanceof StallableJob) {
18
            throw new \InvalidArgumentException('Job is not instanceof '.StallableJob::class);
19
        }
20
21 43
        if (!$job->getId()) {
22 43
            if ($job instanceof StallableJob) {
23 43
                $this->setStallableJobDefaults($job);
24
            }
25
        }
26
27 43
        return $this->stallableSave($job);
28
    }
29
30
    /**
31
     * @param StallableJob $job
32
     * @param $retry true if retry
33
     *
34
     * @return bool true if retry
35
     */
36
    abstract protected function stallableSaveHistory(StallableJob $job, $retry);
37
38
    /**
39
     * @return bool true if retry
40
     *
41
     * @param Job $job
42
     */
43 8
    protected function retryableSaveHistory(RetryableJob $job, $retry)
44
    {
45 8
        if (!$job instanceof StallableJob) {
46
            throw new \InvalidArgumentException('job not instance of '.StallableJob::class);
47
        }
48
49 8
        if ($retry) {
50 4
            return $this->stallableSaveHistory($job, $retry);
51
        }
52
53 8
        if (StallableJob::STATUS_STALLED === $job->getStatus()) {
54 2
            return $this->stallableSaveHistory($job, $this->updateJobStalled($job));
55
        }
56
57 6
        return $this->stallableSaveHistory($job, false);
58
    }
59
60
    /**
61
     * @param StallableJob $job
62
     *
63
     * @return bool false if
64
     */
65 2
    private function updateJobStalled(StallableJob $job)
66
    {
67 2
        return $this->updateJobMax($job, 'Stalls', StallableJob::STATUS_MAX_STALLS, true);
68
    }
69
70 43
    protected function setStallableJobDefaults(StallableJob $job)
71
    {
72 43
        if (null === $job->getMaxStalls()) {
73 43
            $job->setMaxStalls($this->defaultMaxStalls);
74
        }
75 43
    }
76
77
    /**
78
     * @return int|null
79
     */
80 2
    public function getDefaultMaxStalls()
81
    {
82 2
        return $this->defaultMaxStalls;
83
    }
84
85
    /**
86
     * @param int|null $defaultMaxStalls
87
     */
88 2
    public function setDefaultMaxStalls($defaultMaxStalls)
89
    {
90 2
        $this->defaultMaxStalls = $defaultMaxStalls;
91 2
    }
92
}
93