-
Notifications
You must be signed in to change notification settings - Fork 1
/
sync.go
45 lines (36 loc) · 932 Bytes
/
sync.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package sync
import (
"bytes"
"encoding/gob"
"github.com/ethereum/go-ethereum/common"
"github.com/freeverseio/laos-universal-node/internal/platform/model"
"github.com/freeverseio/laos-universal-node/internal/platform/storage"
)
func SetBlock(tx storage.Tx, key string, block model.Block) error {
var buf bytes.Buffer
encoder := gob.NewEncoder(&buf)
if err := encoder.Encode(block); err != nil {
return err
}
return tx.Set([]byte(key), buf.Bytes())
}
func GetBlock(tx storage.Tx, key string) (model.Block, error) {
defaultBlock := model.Block{
Number: 0,
Timestamp: 0,
Hash: common.Hash{},
}
value, err := tx.Get([]byte(key))
if err != nil {
return defaultBlock, err
}
if value == nil {
return defaultBlock, nil
}
var block model.Block
decoder := gob.NewDecoder(bytes.NewBuffer(value))
if err := decoder.Decode(&block); err != nil {
return defaultBlock, err
}
return block, nil
}