mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-05-22 14:56:44 +00:00

* Rename reachabilityManager.data to dataForInsertion, and use it only during insertions * Make reachabilityData an interface * Fix db serialization of reachability data * Fix reachabilityDataStore * Fix all tests * Cleanup debugging code * Fix insertToFutureCoveringSet * Add comments * Rename to ReachabilityData and MutableReachabilityData
50 lines
1.6 KiB
Go
50 lines
1.6 KiB
Go
package serialization
|
|
|
|
import (
|
|
"github.com/kaspanet/kaspad/domain/consensus/model"
|
|
"github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
|
|
"github.com/kaspanet/kaspad/domain/consensus/utils/reachabilitydata"
|
|
)
|
|
|
|
// ReachablityDataToDBReachablityData converts ReachabilityData to DbReachabilityData
|
|
func ReachablityDataToDBReachablityData(reachabilityData model.ReachabilityData) *DbReachabilityData {
|
|
parent := reachabilityData.Parent()
|
|
var dbParent *DbHash
|
|
if parent != nil {
|
|
dbParent = DomainHashToDbHash(parent)
|
|
}
|
|
|
|
return &DbReachabilityData{
|
|
Children: DomainHashesToDbHashes(reachabilityData.Children()),
|
|
Parent: dbParent,
|
|
Interval: reachablityIntervalToDBReachablityInterval(reachabilityData.Interval()),
|
|
FutureCoveringSet: DomainHashesToDbHashes(reachabilityData.FutureCoveringSet()),
|
|
}
|
|
}
|
|
|
|
// DBReachablityDataToReachablityData converts DbReachabilityData to ReachabilityData
|
|
func DBReachablityDataToReachablityData(dbReachabilityData *DbReachabilityData) (model.ReachabilityData, error) {
|
|
children, err := DbHashesToDomainHashes(dbReachabilityData.Children)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var parent *externalapi.DomainHash
|
|
if dbReachabilityData.Parent != nil {
|
|
var err error
|
|
parent, err = DbHashToDomainHash(dbReachabilityData.Parent)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
}
|
|
|
|
interval := dbReachablityIntervalToReachablityInterval(dbReachabilityData.Interval)
|
|
|
|
futureCoveringSet, err := DbHashesToDomainHashes(dbReachabilityData.FutureCoveringSet)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return reachabilitydata.New(children, parent, interval, futureCoveringSet), nil
|
|
}
|