Completed
Pull Request — master (#220)
by thomas
69:26
created

OutPointSerializer::serialize()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 7
rs 9.4286
cc 1
eloc 4
nc 1
nop 1
1
<?php
2
3
namespace BitWasp\Bitcoin\Serializer\Transaction;
4
5
use BitWasp\Bitcoin\Transaction\OutPoint;
6
use BitWasp\Bitcoin\Transaction\OutPointInterface;
7
use BitWasp\Buffertools\Parser;
8
use BitWasp\Buffertools\TemplateFactory;
9
10
class OutPointSerializer
11
{
12
    /**
13
     * @return \BitWasp\Buffertools\Template
14
     */
15
    public function getTemplate()
16
    {
17
        return (new TemplateFactory())
18
            ->bytestringle(32)
19
            ->uint32le()
20
            ->getTemplate();
21
    }
22
23
    /**
24
     * @param OutPointInterface $outpoint
25
     * @return \BitWasp\Buffertools\Buffer
26
     */
27
    public function serialize(OutPointInterface $outpoint)
28
    {
29
        return $this->getTemplate()->write([
30
            $outpoint->getTxId(),
31
            $outpoint->getVout()
32
        ]);
33
    }
34
35
    /**
36
     * @param Parser $parser
37
     * @return OutPointInterface
38
     */
39
    public function fromParser(Parser $parser)
40
    {
41
        list ($txid, $vout) = $this->getTemplate()->parse($parser);
42
43
        return new OutPoint($txid, $vout);
44
    }
45
46
    /**
47
     * @param string|\BitWasp\Buffertools\Buffer $data
48
     * @return OutPointInterface
49
     */
50
    public function parse($data)
51
    {
52
        return $this->fromParser(new Parser($data));
53
    }
54
}
55