SchedulerMessagesRouterConfigurator::configure()   A
last analyzed

Complexity

Conditions 3
Paths 7

Size

Total Lines 22
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 0
Metric Value
cc 3
eloc 11
nc 7
nop 1
dl 0
loc 22
ccs 0
cts 19
cp 0
crap 12
rs 9.9
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * Scheduler implementation module.
5
 *
6
 * @author  Maksim Masiukevich <[email protected]>
7
 * @license MIT
8
 * @license https://opensource.org/licenses/MIT
9
 */
10
11
declare(strict_types = 1);
12
13
namespace ServiceBus\Scheduler\Module;
14
15
use ServiceBus\MessagesRouter\Exceptions\MessageRouterConfigurationFailed;
16
use ServiceBus\MessagesRouter\Router;
17
use ServiceBus\MessagesRouter\RouterConfigurator;
18
use ServiceBus\Scheduler\Contract\EmitSchedulerOperation;
19
use ServiceBus\Scheduler\Contract\OperationScheduled;
20
use ServiceBus\Scheduler\Contract\SchedulerOperationCanceled;
21
use ServiceBus\Scheduler\Contract\SchedulerOperationEmitted;
22
use ServiceBus\Scheduler\Emitter\SchedulerEmitter;
23
use ServiceBus\Scheduler\Processor\SchedulerMessagesProcessor;
24
25
/**
26
 *
27
 */
28
final class SchedulerMessagesRouterConfigurator implements RouterConfigurator
29
{
30
    /**
31
     * @var SchedulerEmitter
32
     */
33
    private $emitter;
34
35
    /**
36
     * @param SchedulerEmitter $emitter
37
     */
38
    public function __construct(SchedulerEmitter $emitter)
39
    {
40
        $this->emitter = $emitter;
41
    }
42
43
    /**
44
     * {@inheritdoc}
45
     */
46
    public function configure(Router $router): void
47
    {
48
        try
49
        {
50
            $processor = new SchedulerMessagesProcessor($this->emitter);
51
52
            $listenEvents = [
53
                SchedulerOperationEmitted::class,
54
                SchedulerOperationCanceled::class,
55
                OperationScheduled::class,
56
            ];
57
58
            foreach ($listenEvents as $event)
59
            {
60
                $router->registerListener($event, $processor);
61
            }
62
63
            $router->registerHandler(EmitSchedulerOperation::class, $processor);
64
        }
65
        catch (\Throwable $throwable)
66
        {
67
            throw new MessageRouterConfigurationFailed($throwable->getMessage(), (int) $throwable->getCode(), $throwable);
68
        }
69
    }
70
}
71