Svarog ad9c213a06
Restructure database to prevent double-slashes in keys, causing bugs in cursors (#1432)
* Add TestValidateAndInsertPruningPointWithSideBlocks

* Optimize infrastracture bucket paths

* Update infrastracture tests

* Refactor the consensus/database layer

* Remove utils/dbkeys

* Use consensus/database in consensus instead of infrastructure

* Fix a bug in dbBucketToDatabaseBucket and MakeBucket combination

Co-authored-by: Elichai Turkel <elichai.turkel@gmail.com>
Co-authored-by: stasatdaglabs <39559713+stasatdaglabs@users.noreply.github.com>
2021-01-19 14:19:08 +02:00

63 lines
1.9 KiB
Go

package reachabilitymanager
import (
"github.com/kaspanet/kaspad/domain/consensus/database"
"github.com/kaspanet/kaspad/domain/consensus/model"
"github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
"github.com/kaspanet/kaspad/domain/consensus/utils/reachabilitydata"
"github.com/pkg/errors"
)
func (rt *reachabilityManager) reachabilityDataForInsertion(
blockHash *externalapi.DomainHash) (model.MutableReachabilityData, error) {
data, err := rt.reachabilityDataStore.ReachabilityData(rt.databaseContext, blockHash)
if err == nil {
return data.CloneMutable(), nil
}
if errors.Is(err, database.ErrNotFound) {
return reachabilitydata.EmptyReachabilityData(), nil
}
return nil, err
}
func (rt *reachabilityManager) futureCoveringSet(blockHash *externalapi.DomainHash) (model.FutureCoveringTreeNodeSet, error) {
data, err := rt.reachabilityDataStore.ReachabilityData(rt.databaseContext, blockHash)
if err != nil {
return nil, err
}
return data.FutureCoveringSet(), nil
}
func (rt *reachabilityManager) interval(blockHash *externalapi.DomainHash) (*model.ReachabilityInterval, error) {
data, err := rt.reachabilityDataStore.ReachabilityData(rt.databaseContext, blockHash)
if err != nil {
return nil, err
}
return data.Interval(), nil
}
func (rt *reachabilityManager) children(blockHash *externalapi.DomainHash) ([]*externalapi.DomainHash, error) {
data, err := rt.reachabilityDataStore.ReachabilityData(rt.databaseContext, blockHash)
if err != nil {
return nil, err
}
return data.Children(), nil
}
func (rt *reachabilityManager) parent(blockHash *externalapi.DomainHash) (*externalapi.DomainHash, error) {
data, err := rt.reachabilityDataStore.ReachabilityData(rt.databaseContext, blockHash)
if err != nil {
return nil, err
}
return data.Parent(), nil
}
func (rt *reachabilityManager) reindexRoot() (*externalapi.DomainHash, error) {
return rt.reachabilityDataStore.ReachabilityReindexRoot(rt.databaseContext)
}