Client   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 12
c 1
b 0
f 0
dl 0
loc 33
ccs 0
cts 16
cp 0
rs 10
wmc 3

2 Methods

Rating   Name   Duplication   Size   Complexity  
A query() 0 11 1
A __construct() 0 6 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Afonso\Dns;
6
7
class Client
8
{
9
    /**
10
     * @var \Afonso\Dns\SerializerInterface
11
     */
12
    protected $serializer;
13
14
    public function __construct(SerializerInterface $serializer = null)
15
    {
16
        if ($serializer === null) {
17
            $serializer = new Serializer();
18
        }
19
        $this->serializer = $serializer;
20
    }
21
22
    /**
23
     * Queries the specified name server with data from the given request.
24
     *
25
     * @param \Afonso\Dns\Request $request
26
     * @param string $nameserver The IP address of the resolver
27
     * @return \Afonso\Dns\Response
28
     */
29
    public function query(Request $request, string $nameserver): Response
30
    {
31
        $serialized = $this->serializer->serializeRequest($request);
32
33
        $socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
34
        socket_sendto($socket, $serialized, strlen($serialized), 0, $nameserver, 53);
35
        $assembled = '';
36
        $received = socket_recv($socket, $assembled, 2048, MSG_WAITALL);
0 ignored issues
show
Unused Code introduced by
The assignment to $received is dead and can be removed.
Loading history...
37
        socket_close($socket);
38
39
        return $this->serializer->deserializeResponse($assembled);
40
    }
41
}
42