forked from kaspanet/kaspad
/
blues_anticone_sizes.go
47 lines (39 loc) · 1.34 KB
/
blues_anticone_sizes.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
46
47
package serialization
import (
"github.com/Hoosat-Oy/HTND/domain/consensus/model/externalapi"
"github.com/pkg/errors"
)
func bluesAnticoneSizesToDBBluesAnticoneSizes(bluesAnticoneSizes map[externalapi.DomainHash]externalapi.KType) []*DbBluesAnticoneSizes {
dbBluesAnticoneSizes := make([]*DbBluesAnticoneSizes, len(bluesAnticoneSizes))
i := 0
for hash, anticoneSize := range bluesAnticoneSizes {
hashCopy := hash
dbBluesAnticoneSizes[i] = &DbBluesAnticoneSizes{
BlueHash: DomainHashToDbHash(&hashCopy),
AnticoneSize: uint32(anticoneSize),
}
i++
}
return dbBluesAnticoneSizes
}
func dbBluesAnticoneSizesToBluesAnticoneSizes(dbBluesAnticoneSizes []*DbBluesAnticoneSizes) (map[externalapi.DomainHash]externalapi.KType, error) {
bluesAnticoneSizes := make(map[externalapi.DomainHash]externalapi.KType, len(dbBluesAnticoneSizes))
for _, data := range dbBluesAnticoneSizes {
hash, err := DbHashToDomainHash(data.BlueHash)
if err != nil {
return nil, err
}
bluesAnticoneSizes[*hash], err = uint32ToKType(data.AnticoneSize)
if err != nil {
return nil, err
}
}
return bluesAnticoneSizes, nil
}
func uint32ToKType(n uint32) (externalapi.KType, error) {
convertedN := externalapi.KType(n)
if uint32(convertedN) != n {
return 0, errors.Errorf("cannot convert %d to KType without losing data", n)
}
return convertedN, nil
}