Completed
Push — master ( 2dcc62...2dcc62 )
by thomas
151:35 queued 116:37
created

NetworkMessage   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 75
Duplicated Lines 0 %

Coupling/Cohesion

Components 3
Dependencies 7

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 6
lcom 3
cbo 7
dl 0
loc 75
ccs 13
cts 13
cp 1
rs 10
c 0
b 0
f 0

6 Methods

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