Test Failed
Pull Request — master (#29)
by Nicolas
02:57
created

MessageProcessorAware::setMessageProcessors()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 14
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 3

Importance

Changes 0
Metric Value
dl 0
loc 14
c 0
b 0
f 0
ccs 6
cts 6
cp 1
rs 9.4285
cc 3
eloc 6
nc 3
nop 1
crap 3
1
<?php
2
3
namespace Puzzle\AMQP\Clients\Processors;
4
5
use Puzzle\AMQP\Messages\Processor;
6
use Puzzle\AMQP\WritableMessage;
7
use Puzzle\AMQP\Messages\OnPublishProcessor;
8
use Puzzle\AMQP\ReadableMessage;
9
use Puzzle\AMQP\Messages\OnConsumeProcessor;
10
11
trait MessageProcessorAware
12
{
13 4
    private
14
        $messageProcessors = [];
15 4
    
16
    public function setMessageProcessors(array $processors)
17 4
    {
18
        $this->messageProcessors = [];
19
20 13
        foreach($processors as $processor)
21
        {
22 13
            if($processor instanceof Processor)
23
            {
24 4
                $this->appendMessageProcessor($processor);
25 13
            }
26 13
        }
27
28
        return $this;
29
    }
30
31
    public function appendMessageProcessor(Processor $processor)
32
    {
33
        $this->messageProcessors[] = $processor;
34
        
35
        return $this;
36
    }
37
    
38
    private function onPublish(WritableMessage $message)
39
    {
40
        foreach($this->messageProcessors as $messageProcessor)
41
        {
42
            if($messageProcessor instanceof OnPublishProcessor)
43
            {
44
                $messageProcessor->onPublish($message);
45
            }
46
        }
47
    }
48
49
    private function onConsume(ReadableMessage $message)
50
    {
51
        foreach(array_reverse($this->messageProcessors) as $messageProcessor)
52
        {
53
            if($messageProcessor instanceof OnConsumeProcessor)
54
            {
55
                $message = $messageProcessor->onConsume($message);
56
            }
57
        }
58
59
        return $message;
60
    }
61
}
62