types.go 990 Bytes
Newer Older
1 2 3
package database

import (
4
	"io"
5

6 7 8
	"github.com/ethereum/go-ethereum/common"
	"github.com/ethereum/go-ethereum/core/types"
	"github.com/ethereum/go-ethereum/rlp"
9 10
)

Hamdi Allam's avatar
Hamdi Allam committed
11 12
// Wrapper over types.Header such that we can get an RLP
// encoder over it via a `types.Block` wrapper
13

14
type RLPHeader types.Header
15

16
func (h *RLPHeader) EncodeRLP(w io.Writer) error {
17 18 19
	return types.NewBlockWithHeader((*types.Header)(h)).EncodeRLP(w)
}

20
func (h *RLPHeader) DecodeRLP(s *rlp.Stream) error {
21 22 23 24 25 26 27
	block := new(types.Block)
	err := block.DecodeRLP(s)
	if err != nil {
		return err
	}

	header := block.Header()
28
	*h = (RLPHeader)(*header)
29 30 31
	return nil
}

32
func (h *RLPHeader) Header() *types.Header {
33 34 35
	return (*types.Header)(h)
}

36
func (h *RLPHeader) Hash() common.Hash {
37 38
	return h.Header().Hash()
}
Hamdi Allam's avatar
Hamdi Allam committed
39

Hamdi Allam's avatar
Hamdi Allam committed
40 41 42
// Type definition for []byte to conform to the
// interface expected by the `bytes` serializer

Hamdi Allam's avatar
Hamdi Allam committed
43 44 45 46 47 48 49 50
type Bytes []byte

func (b Bytes) Bytes() []byte {
	return b[:]
}
func (b *Bytes) SetBytes(bytes []byte) {
	*b = bytes
}