QueryBus   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Importance

Changes 2
Bugs 1 Features 0
Metric Value
wmc 4
c 2
b 1
f 0
lcom 0
cbo 2
dl 0
loc 37
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A getName() 0 4 1
A dispatchNow() 0 17 3
1
<?php
2
/*
3
 * This file is part of the Borobudur-Cqrs package.
4
 *
5
 * (c) Hexacodelabs <http://hexacodelabs.com>
6
 *
7
 * For the full copyright and license information, please view the LICENSE
8
 * file that was distributed with this source code.
9
 */
10
11
namespace Borobudur\Cqrs\Bus;
12
13
use Borobudur\Bus\Bus;
14
use Borobudur\Bus\Message\MessageInterface;
15
use Borobudur\Cqrs\Collection;
16
use Borobudur\Cqrs\Exception\InvalidArgumentException;
17
use Borobudur\Cqrs\Message\QueryInterface;
18
use Borobudur\Cqrs\ReadModel\ReadModelInterface;
19
20
/**
21
 * @author      Iqbal Maulana <[email protected]>
22
 * @created     8/19/15
23
 */
24
class QueryBus extends Bus
25
{
26
    const BUS_NAME = 'bus.query';
27
28
    /**
29
     * {@inheritdoc}
30
     */
31
    public function getName()
32
    {
33
        return QueryBus::BUS_NAME;
34
    }
35
36
    /**
37
     * {@inheritdoc}
38
     *
39
     * @return ReadModelInterface|Collection
40
     */
41
    public function dispatchNow(MessageInterface $query)
42
    {
43
        if (!$query instanceof QueryInterface) {
44
            throw new InvalidArgumentException(sprintf(
45
                'Query "%s" should implement \Borobudur\Cqrs\Message\QueryInterface',
46
                get_class($query)
47
            ));
48
        }
49
50
        $results = parent::dispatchNow($query);
51
52
        if (null === $results) {
53
            return null;
54
        }
55
56
        return $results;
57
    }
58
59
60
}
61