RpcServer   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 58
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 5
dl 0
loc 58
ccs 19
cts 19
cp 1
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A processMessage() 0 12 2
A sendReply() 0 5 1
A getSerializer() 0 4 1
A setSerializer() 0 6 1
1
<?php
2
3
namespace RabbitMqModule;
4
5
use PhpAmqpLib\Message\AMQPMessage;
6
use Zend\Serializer\Adapter\AdapterInterface as SerializerInterface;
7
8
/**
9
 * Class RpcServer
10
 * @package RabbitMqModule
11
 */
12
class RpcServer extends Consumer
13
{
14
    /**
15
     * @var SerializerInterface
16
     */
17
    protected $serializer;
18
19
    /**
20
     * @param AMQPMessage $message
21
     */
22 2
    public function processMessage(AMQPMessage $message)
23
    {
24
        /** @var \PhpAmqpLib\Channel\AMQPChannel $channel */
25 2
        $channel = $message->delivery_info['channel'];
26 2
        $channel->basic_ack($message->delivery_info['delivery_tag']);
27 2
        $result = call_user_func($this->getCallback(), $message);
28 2
        if ($this->serializer) {
29 1
            $result = $this->serializer->serialize($result);
30 1
        }
31 2
        $this->sendReply($result, $message->get('reply_to'), $message->get('correlation_id'));
32 2
        $this->maybeStopConsumer();
33 2
    }
34
35
    /**
36
     * @param mixed  $result
37
     * @param string $client
38
     * @param string $correlationId
39
     */
40 2
    protected function sendReply($result, $client, $correlationId)
41
    {
42 2
        $reply = new AMQPMessage($result, ['content_type' => 'text/plain', 'correlation_id' => $correlationId]);
43 2
        $this->getChannel()->basic_publish($reply, '', $client);
44 2
    }
45
46
    /**
47
     * Get the serializer.
48
     *
49
     * @return SerializerInterface
50
     */
51 1
    public function getSerializer()
52
    {
53 1
        return $this->serializer;
54
    }
55
56
    /**
57
     * Set the serializer.
58
     *
59
     * @param SerializerInterface $serializer
60
     *
61
     * @return $this
62
     */
63 2
    public function setSerializer(SerializerInterface $serializer = null)
64
    {
65 2
        $this->serializer = $serializer;
66
67 2
        return $this;
68
    }
69
}
70