SimpleBusEventPublisher::publish()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 12
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 6
nc 3
nop 0
dl 0
loc 12
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Damax\Common\Domain\EventPublisher;
6
7
use SimpleBus\Message\Bus\MessageBus;
8
use SimpleBus\Message\Recorder\ContainsRecordedMessages;
9
10
final class SimpleBusEventPublisher implements EventPublisher
11
{
12
    private $recorder;
13
    private $eventBus;
14
15
    public function __construct(ContainsRecordedMessages $recorder, MessageBus $eventBus)
16
    {
17
        $this->recorder = $recorder;
18
        $this->eventBus = $eventBus;
19
    }
20
21
    public function publish(): void
22
    {
23
        $eventStream = $this->recorder->recordedMessages();
24
25
        if (!count($eventStream)) {
26
            return;
27
        }
28
29
        $this->recorder->eraseMessages();
30
31
        foreach ($eventStream as $event) {
32
            $this->eventBus->handle($event);
33
        }
34
    }
35
36
    public function discard(): void
37
    {
38
        $this->recorder->eraseMessages();
39
    }
40
}
41