createLogicalMessageContextFromReplyContext()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 13

Duplication

Lines 13
Ratio 100 %

Code Coverage

Tests 10
CRAP Score 1

Importance

Changes 0
Metric Value
dl 13
loc 13
ccs 10
cts 10
cp 1
rs 9.8333
c 0
b 0
f 0
cc 1
nc 1
nop 2
crap 1
1
<?php
2
namespace PSB\Core\Pipeline\Outgoing;
3
4
5
use PSB\Core\Pipeline\Outgoing\StageContext\DispatchContext;
6
use PSB\Core\Pipeline\Outgoing\StageContext\OutgoingLogicalMessageContext;
7
use PSB\Core\Pipeline\Outgoing\StageContext\OutgoingPhysicalMessageContext;
8
use PSB\Core\Pipeline\Outgoing\StageContext\OutgoingPublishContext;
9
use PSB\Core\Pipeline\Outgoing\StageContext\OutgoingReplyContext;
10
use PSB\Core\Pipeline\Outgoing\StageContext\OutgoingSendContext;
11
use PSB\Core\Pipeline\PipelineStageContext;
12
use PSB\Core\Routing\AddressTagInterface;
13
use PSB\Core\Routing\MulticastAddressTag;
14
use PSB\Core\Routing\UnicastAddressTag;
15
use PSB\Core\Transport\OutgoingPhysicalMessage;
16
17
class OutgoingContextFactory
18
{
19
    /**
20
     * @param OutgoingPublishContext $parentContext
21
     *
22
     * @return OutgoingLogicalMessageContext
23
     */
24 1 View Code Duplication
    public function createLogicalMessageContextFromPublishContext(
25
        OutgoingPublishContext $parentContext
26
    ) {
27 1
        return new OutgoingLogicalMessageContext(
28 1
            $parentContext->getMessageId(),
29 1
            $parentContext->getHeaders(),
30 1
            $parentContext->getLogicalMessage(),
31 1
            [new MulticastAddressTag($parentContext->getLogicalMessage()->getMessageClass())],
32 1
            $parentContext->getPublishOptions()->isImmediateDispatchEnabled(),
33 1
            $parentContext->getIncomingPhysicalMessage(),
34 1
            $parentContext->getPendingTransportOperations(),
35 1
            $parentContext
36
        );
37
    }
38
39
    /**
40
     * @param AddressTagInterface[] $addressTags
41
     * @param OutgoingSendContext   $parentContext
42
     *
43
     * @return OutgoingLogicalMessageContext
44
     */
45 1
    public function createLogicalMessageContextFromSendContext(
46
        array $addressTags,
47
        OutgoingSendContext $parentContext
48
    ) {
49 1
        return new OutgoingLogicalMessageContext(
50 1
            $parentContext->getMessageId(),
51 1
            $parentContext->getHeaders(),
52 1
            $parentContext->getLogicalMessage(),
53 1
            $addressTags,
54 1
            $parentContext->getSendOptions()->isImmediateDispatchEnabled(),
55 1
            $parentContext->getIncomingPhysicalMessage(),
56 1
            $parentContext->getPendingTransportOperations(),
57 1
            $parentContext
58
        );
59
    }
60
61
    /**
62
     * @param string               $replyToAddress
63
     * @param OutgoingReplyContext $parentContext
64
     *
65
     * @return OutgoingLogicalMessageContext
66
     */
67 1 View Code Duplication
    public function createLogicalMessageContextFromReplyContext($replyToAddress, OutgoingReplyContext $parentContext)
68
    {
69 1
        return new OutgoingLogicalMessageContext(
70 1
            $parentContext->getMessageId(),
71 1
            $parentContext->getHeaders(),
72 1
            $parentContext->getLogicalMessage(),
73 1
            [new UnicastAddressTag($replyToAddress)],
74 1
            $parentContext->getReplyOptions()->isImmediateDispatchEnabled(),
75 1
            $parentContext->getIncomingPhysicalMessage(),
76 1
            $parentContext->getPendingTransportOperations(),
77 1
            $parentContext
78
        );
79
    }
80
81
    /**
82
     * @param string                        $body
83
     * @param OutgoingLogicalMessageContext $parentContext
84
     *
85
     * @return OutgoingPhysicalMessageContext
86
     */
87 1 View Code Duplication
    public function createPhysicalMessageContext($body, OutgoingLogicalMessageContext $parentContext)
88
    {
89 1
        return new OutgoingPhysicalMessageContext(
90 1
            $parentContext->getMessageId(),
91 1
            $parentContext->getHeaders(),
92 1
            new OutgoingPhysicalMessage($parentContext->getMessageId(), $parentContext->getHeaders(), $body),
93 1
            $parentContext->getAddressTags(),
94 1
            $parentContext->isImmediateDispatchEnabled(),
95 1
            $parentContext->getIncomingPhysicalMessage(),
96 1
            $parentContext->getPendingTransportOperations(),
97 1
            $parentContext
98
        );
99
    }
100
101
    /**
102
     * @param array                $transportOperations
103
     * @param PipelineStageContext $parentContext
104
     *
105
     * @return DispatchContext
106
     */
107 1
    public function createDispatchContext(
108
        array $transportOperations,
109
        PipelineStageContext $parentContext
110
    ) {
111 1
        return new DispatchContext($transportOperations, $parentContext);
112
    }
113
}
114