NetworkMessage   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 75
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 16
dl 0
loc 75
ccs 13
cts 13
cp 1
rs 10
c 0
b 0
f 0
wmc 6

6 Methods

Rating   Name   Duplication   Size   Complexity  
A getCommand() 0 3 1
A getHeader() 0 3 1
A getBuffer() 0 3 1
A getChecksum() 0 3 1
A getPayload() 0 3 1
A __construct() 0 13 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace BitWasp\Bitcoin\Networking;
6
7
use BitWasp\Bitcoin\Crypto\Hash;
8
use BitWasp\Bitcoin\Network\NetworkInterface;
9
use BitWasp\Bitcoin\Networking\Serializer\NetworkMessageSerializer;
10
use BitWasp\Bitcoin\Networking\Structure\Header;
11
use BitWasp\Bitcoin\Serializable;
12
use BitWasp\Buffertools\BufferInterface;
13
14
class NetworkMessage extends Serializable
15
{
16
    /**
17
     * @var NetworkInterface
18
     */
19
    private $network;
20
21
    /**
22
     * @var NetworkSerializableInterface
23
     */
24
    private $payload;
25
26
    /**
27 96
     * @var Header
28
     */
29 96
    private $header;
30 96
31 96
    /**
32
     * @param NetworkInterface $network
33
     * @param NetworkSerializableInterface $message
34
     */
35
    public function __construct(
36 93
        NetworkInterface $network,
37
        NetworkSerializableInterface $message
38 93
    ) {
39
        $this->network = $network;
40
        $this->payload = $message;
41
42
        $buffer = $message->getBuffer();
43
44 93
        $this->header = new Header(
45
            $message->getNetworkCommand(),
46 93
            $buffer->getSize(),
47
            Hash::sha256d($buffer)->slice(0, 4)
48
        );
49
    }
50
51
    /**
52 93
     * @return NetworkSerializableInterface
53
     */
54 93
    public function getPayload(): NetworkSerializableInterface
55 93
    {
56
        return $this->payload;
57
    }
58
59
    /**
60
     * @return string
61 96
     */
62
    public function getCommand(): string
63 96
    {
64
        return $this->payload->getNetworkCommand();
65
    }
66
67
    /**
68
     * @return BufferInterface
69
     */
70
    public function getChecksum(): BufferInterface
71
    {
72
        return $this->header->getChecksum();
73
    }
74
75
    /**
76
     * @return Header
77
     */
78
    public function getHeader(): Header
79
    {
80
        return $this->header;
81
    }
82
83
    /**
84
     * @return BufferInterface
85
     */
86
    public function getBuffer(): BufferInterface
87
    {
88
        return (new NetworkMessageSerializer($this->network))->serialize($this);
89
    }
90
}
91