Client::query()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 7
c 1
b 0
f 0
nc 1
nop 2
dl 0
loc 11
ccs 0
cts 9
cp 0
crap 2
rs 10
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