Completed
Push — dev ( e633be...644e89 )
by Vlad
05:38
created

Iterator::setQueueName()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 6
c 0
b 0
f 0
ccs 3
cts 3
cp 1
rs 9.4285
cc 1
eloc 3
nc 1
nop 1
crap 1
1
<?php
2
3
namespace Simplario\Quedis;
4
5
use Simplario\Quedis\Interfaces\IteratorInterface;
6
use Simplario\Quedis\Interfaces\MessageInterface;
7
use Simplario\Quedis\Interfaces\QueueInterface;
8
9
/**
10
 * Class Iterator
11
 *
12
 * @package Simplario\Quedis
13
 */
14
class Iterator implements IteratorInterface
15
{
16
    /**
17
     * @var QueueInterface
18
     */
19
    protected $queue;
20
21
    /**
22
     * @var string
23
     */
24
    protected $queueName;
25
26
    /**
27
     * @var string
28
     */
29
    protected $strategy;
30
31
    /**
32
     * @var int
33
     */
34
    protected $timeout;
35
36
    /**
37
     * @var int
38
     */
39
    protected $index = 0;
40
41
    /**
42
     * @var MessageInterface
43
     */
44
    protected $lastMessage;
45
46
    /**
47
     * Iterator constructor.
48
     *
49
     * @param QueueInterface $queue
50
     * @param string         $queueName
51
     * @param string         $strategy
52
     * @param int            $timeout
53
     */
54 5
    public function __construct(QueueInterface $queue, $queueName, $strategy = 'pop', $timeout = 0)
55
    {
56
        $this
57 5
            ->setQueue($queue)
58 5
            ->setQueueName($queueName)
59 5
            ->setStrategy($strategy)
60 5
            ->setTimeout($timeout);
61 5
    }
62
63
    /**
64
     * @param QueueInterface $queue
65
     *
66
     * @return $this
67
     */
68 5
    public function setQueue(QueueInterface $queue)
69
    {
70 5
        $this->queue = $queue;
71
72 5
        return $this;
73
    }
74
75
    /**
76
     * @param $queueName
77
     *
78
     * @return $this
79
     */
80 5
    public function setQueueName($queueName)
81
    {
82 5
        $this->queueName = $queueName;
83
84 5
        return $this;
85
    }
86
87
    /**
88
     * @param $strategy
89
     *
90
     * @return $this
91
     */
92 5
    public function setStrategy($strategy)
93
    {
94 5
        $this->strategy = in_array($strategy, ['pop', 'reserve']) ? $strategy : 'pop';
95
96 5
        return $this;
97
    }
98
99
    /**
100
     * @param $timeout
101
     *
102
     * @return $this
103
     */
104 5
    public function setTimeout($timeout)
105
    {
106 5
        $this->timeout = $timeout;
107
108 5
        return $this;
109
    }
110
111
    /**
112
     * @return null|MessageInterface
113
     */
114 4
    protected function getMessage()
115
    {
116 4
        return $this->queue->{$this->strategy}($this->queueName, $this->timeout);
117
    }
118
119
    // implement \Iterator methods ==============================================
120
121
    /**
122
     * @return MessageInterface
123
     */
124 4
    public function current()
125
    {
126 4
        return $this->lastMessage;
127
    }
128
129
    /**
130
     * @return int
131
     */
132 4
    public function key()
133
    {
134 4
        return $this->index;
135
    }
136
137
    /**
138
     * @return bool
139
     */
140 4
    public function valid()
141
    {
142 4
        $this->lastMessage = $this->getMessage();
143
144 4
        return $this->lastMessage instanceof MessageInterface;
145
    }
146
147
    /**
148
     * @return void
149
     */
150 4
    public function rewind()
151
    {
152 4
        $this->index = 0;
153 4
    }
154
155
    /**
156
     * @return void
157
     */
158 3
    public function next()
159
    {
160 3
        $this->index++;
161
    }
162
}