Completed
Push — master ( 613d98...fa04c9 )
by Rémi
20:40
created

AckHandler::handle()   A

Complexity

Conditions 2
Paths 3

Size

Total Lines 11
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 11
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 8
nc 3
nop 1
1
<?php
2
3
namespace Burrow\Handler;
4
5
use Burrow\ConsumeOptions;
6
use Burrow\Driver;
7
use Burrow\Message;
8
use Burrow\QueueHandler;
9
10
class AckHandler implements QueueHandler
11
{
12
    /** @var QueueHandler */
13
    private $handler;
14
15
    /** @var Driver */
16
    private $driver;
17
18
    /** @var bool */
19
    private $requeueOnFailure;
20
21
    /**
22
     * AckHandler constructor.
23
     *
24
     * @param QueueHandler $handler
25
     * @param Driver       $driver
26
     * @param bool         $requeueOnFailure
27
     */
28
    public function __construct(QueueHandler $handler, Driver $driver, $requeueOnFailure = true)
29
    {
30
        $this->handler = $handler;
31
        $this->driver = $driver;
32
        $this->requeueOnFailure = $requeueOnFailure;
33
    }
34
35
    /**
36
     * Handle a message.
37
     *
38
     * @param Message $message
39
     *
40
     * @return bool
41
     *
42
     * @throws \Exception
43
     */
44
    public function handle(Message $message)
45
    {
46
        try {
47
            $result = $this->handler->handle($message);
48
            $this->driver->ack($message);
49
            return $result;
50
        } catch (\Exception $e) {
51
            $this->driver->nack($message, $this->requeueOnFailure);
52
            throw $e;
53
        }
54
    }
55
56
    /**
57
     * Modify and return the options for consumption.
58
     *
59
     * @param ConsumeOptions $options
60
     *
61
     * @return ConsumeOptions
62
     */
63
    public function options(ConsumeOptions $options)
64
    {
65
        $options->disableAutoAck();
66
67
        return $this->handler->options($options);
68
    }
69
}
70