Completed
Push — master ( ae91fe...8a628b )
by Nicolas
15:46
created

MessageProcessorAware   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 10
lcom 1
cbo 2
dl 0
loc 51
ccs 28
cts 28
cp 1
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A setMessageProcessors() 0 14 3
A appendMessageProcessor() 0 6 1
A onPublish() 0 10 3
A onConsume() 0 12 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
    private
14
        $messageProcessors = [];
15
    
16 2
    public function setMessageProcessors(array $processors)
17
    {
18 2
        $this->messageProcessors = [];
19
20 2
        foreach($processors as $processor)
21
        {
22 2
            if($processor instanceof Processor)
23 2
            {
24 2
                $this->appendMessageProcessor($processor);
25 2
            }
26 2
        }
27
28 2
        return $this;
29
    }
30
31 6
    public function appendMessageProcessor(Processor $processor)
32
    {
33 6
        $this->messageProcessors[] = $processor;
34
        
35 6
        return $this;
36
    }
37
    
38 13
    private function onPublish(WritableMessage $message)
39
    {
40 13
        foreach($this->messageProcessors as $messageProcessor)
41
        {
42 5
            if($messageProcessor instanceof OnPublishProcessor)
43 5
            {
44 2
                $messageProcessor->onPublish($message);
45 2
            }
46 13
        }
47 13
    }
48
49 2
    private function onConsume(ReadableMessage $message)
50
    {
51 2
        foreach(array_reverse($this->messageProcessors) as $messageProcessor)
52
        {
53 1
            if($messageProcessor instanceof OnConsumeProcessor)
54 1
            {
55 1
                $message = $messageProcessor->onConsume($message);
56 1
            }
57 2
        }
58
59 2
        return $message;
60
    }
61
}
62