Completed
Pull Request — master (#39)
by Aleksandr
06:46
created

DeclarationsRegistry::getBindingsByExchange()   A

Complexity

Conditions 3
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 2
c 0
b 0
f 0
nc 1
nop 1
dl 0
loc 4
rs 10
1
<?php
2
3
namespace OldSound\RabbitMqBundle\Declarations;
4
5
class DeclarationsRegistry
6
{
7
    /** @var ExchangeDeclaration[] */
8
    public $exchanges;
9
    /** @var QueueDeclaration[] */
10
    public $queues;
11
    /** @var BindingDeclaration[] */
12
    public $bindings = [];
13
    
14
    public function addExchange(ExchangeDeclaration $exchangeDeclaration)
15
    {
16
        if (isset($this->exchanges[$exchangeDeclaration->name])) {
17
            throw new \InvalidArgumentException(sprintf('Exchange declartion with %s name already registerd', $exchangeDeclaration->name));
18
        }
19
        $this->exchanges[$exchangeDeclaration->name] = $exchangeDeclaration;
20
    }
21
    
22
    public function addQueue(QueueDeclaration $queueDeclaration)
23
    {
24
        $this->queues[] = $queueDeclaration;    
25
    }
26
27
    public function addBinding(BindingDeclaration $bindingDeclaration)
28
    {
29
        $this->bindings[] = $bindingDeclaration;
30
    }
31
32
    /**
33
     * @param ExchangeDeclaration $exchange
34
     * @return BindingDeclaration[]
35
     */
36
    public function getBindingsByExchange(ExchangeDeclaration $exchange): array
37
    {
38
        return array_filter($this->bindings, function ($binding) use ($exchange) {
39
            return $binding->exchange === $exchange->name || ($binding->destinationIsExchange && $binding->destination === $exchange->name);
40
        });
41
    }
42
}