RedisMessageProvider::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 5
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 2
1
<?php
2
3
namespace Dekalee\RedisSwarrot\MessageProvider;
4
5
use Swarrot\Broker\Message;
6
use Swarrot\Broker\MessageProvider\MessageProviderInterface;
7
8
/**
9
 * Class RedisMessageProvider
10
 */
11
class RedisMessageProvider implements MessageProviderInterface
12
{
13
    private $channel;
14
    private $queueName;
15
16
    /**
17
     * @param \Redis $channel
18
     * @param string $queueName
19
     */
20
    public function __construct(\Redis $channel, $queueName)
21
    {
22
        $this->channel = $channel;
23
        $this->queueName = $queueName;
24
    }
25
26
    /**
27
     * get.
28
     *
29
     * @return Message|null
30
     */
31
    public function get()
32
    {
33
        if (0 == $this->channel->lLen($this->getQueueName())) {
34
            return null;
35
        }
36
37
        list($channel, $json) = $this->channel->brPop($this->getQueueName(), 0);
38
39
        $message = new Message($json, ['channel' => $channel]);
40
41
        return $message;
42
    }
43
44
    /**
45
     * ack.
46
     *
47
     * @param Message $message
48
     */
49
    public function ack(Message $message)
50
    {
51
    }
52
53
    /**
54
     * nack.
55
     *
56
     * @param Message $message The message to NACK
57
     * @param bool    $requeue Requeue the message in the queue ?
58
     */
59
    public function nack(Message $message, $requeue = false)
60
    {
61
        if ($requeue) {
62
            $this->channel->lPush($this->getQueueName(), $message->getBody());
63
        }
64
    }
65
66
    /**
67
     * getQueueName.
68
     *
69
     * @return string
70
     */
71
    public function getQueueName()
72
    {
73
        return $this->queueName;
74
    }
75
}
76