Completed
Pull Request — master (#19)
by Akihito
04:19
created

Queueing   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 35
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 9

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 3
c 2
b 0
f 0
lcom 0
cbo 9
dl 0
loc 35
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A createFactory() 0 10 1
A createConsumer() 0 4 1
A createProducer() 0 4 1
1
<?php
2
namespace Ackintosh\Snidel\Traits;
3
4
use Ackintosh\Snidel\Result\Normalizer as ResultNormalizer;
5
use Ackintosh\Snidel\Task\Normalizer as TaskNormalizer;
6
use Bernard\Consumer;
7
use Bernard\Driver;
8
use Bernard\Normalizer\EnvelopeNormalizer;
9
use Bernard\Normalizer\PlainMessageNormalizer;
10
use Bernard\Producer;
11
use Bernard\QueueFactory;
12
use Bernard\QueueFactory\PersistentFactory;
13
use Bernard\Router;
14
use Bernard\Serializer;
15
use Normalt\Normalizer\AggregateNormalizer;
16
use Symfony\Component\EventDispatcher\EventDispatcher;
17
18
trait Queueing
19
{
20
    /**
21
     * @param Driver $driver
22
     * @return PersistentFactory
23
     */
24
    public function createFactory(Driver $driver)
25
    {
26
        $aggregateNormalizer = new AggregateNormalizer([
27
            new EnvelopeNormalizer(),
28
            new TaskNormalizer(),
29
            new ResultNormalizer()
30
        ]);
31
32
        return new PersistentFactory($driver, new Serializer($aggregateNormalizer));
33
    }
34
35
    /**
36
     * @param Router $router
37
     * @return Consumer
38
     */
39
    public function createConsumer(Router $router)
40
    {
41
        return new Consumer($router, new EventDispatcher());
42
    }
43
44
    /**
45
     * @param QueueFactory $factory
46
     * @return Producer
47
     */
48
    public function createProducer(QueueFactory $factory)
49
    {
50
        return new Producer($factory, new EventDispatcher());
51
    }
52
}
53