Ori Newman a436b30ebf
[NOD-1417] Implement reachability (#964)
* [NOD-1417] Implement reachability

* [NOD-1417] Rename package name

* [NOD-1417] Add UpdateReindexRoot to interface api

* [NOD-1417] Remove redundant type

* [NOD-1417] Rename reachabilityTreeManager/reachabilityTree to reachabilityManager

* [NOD-1417] Fix typo

* [NOD-1417] Remove redundant copyright message

* [NOD-1417] Fix comment
2020-10-28 12:19:50 +02:00

60 lines
1.6 KiB
Go

package reachabilitymanager
import (
"github.com/kaspanet/kaspad/domain/consensus/model"
"github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
)
func (rt *reachabilityManager) data(blockHash *externalapi.DomainHash) (*model.ReachabilityData, error) {
return rt.reachabilityDataStore.ReachabilityData(rt.databaseContext, blockHash)
}
func (rt *reachabilityManager) futureCoveringSet(blockHash *externalapi.DomainHash) ([]*externalapi.DomainHash, error) {
data, err := rt.data(blockHash)
if err != nil {
return nil, err
}
return data.FutureCoveringSet, nil
}
func (rt *reachabilityManager) treeNode(blockHash *externalapi.DomainHash) (*model.ReachabilityTreeNode, error) {
data, err := rt.data(blockHash)
if err != nil {
return nil, err
}
return data.TreeNode, nil
}
func (rt *reachabilityManager) interval(blockHash *externalapi.DomainHash) (*model.ReachabilityInterval, error) {
treeNode, err := rt.treeNode(blockHash)
if err != nil {
return nil, err
}
return treeNode.Interval, nil
}
func (rt *reachabilityManager) children(blockHash *externalapi.DomainHash) ([]*externalapi.DomainHash, error) {
data, err := rt.data(blockHash)
if err != nil {
return nil, err
}
return data.TreeNode.Children, nil
}
func (rt *reachabilityManager) parent(blockHash *externalapi.DomainHash) (*externalapi.DomainHash, error) {
data, err := rt.data(blockHash)
if err != nil {
return nil, err
}
return data.TreeNode.Parent, nil
}
func (rt *reachabilityManager) reindexRoot() (*externalapi.DomainHash, error) {
return rt.reachabilityDataStore.ReachabilityReindexRoot(rt.databaseContext)
}