kaspad/infrastructure/db/dbaccess/reachability.go
stasatdaglabs d14809694f
[NOD-1223] Reorganize directory structure (#874)
* [NOD-1223] Delete unused files/packages.

* [NOD-1223] Move signal and limits to the os package.

* [NOD-1223] Put database and dbaccess into the db package.

* [NOD-1223] Fold the logs package into the logger package.

* [NOD-1223] Rename domainmessage to appmessage.

* [NOD-1223] Rename to/from DomainMessage to AppMessage.

* [NOD-1223] Move appmessage to the app packge.

* [NOD-1223] Move protocol to the app packge.

* [NOD-1223] Move the network package to the infrastructure packge.

* [NOD-1223] Rename cmd to executables.

* [NOD-1223] Fix go.doc in the logger package.
2020-08-18 10:26:39 +03:00

65 lines
1.9 KiB
Go

package dbaccess
import (
"github.com/kaspanet/kaspad/infrastructure/db/database"
"github.com/kaspanet/kaspad/util/daghash"
)
var reachabilityDataBucket = database.MakeBucket([]byte("reachability"))
var reachabilityReindexKey = database.MakeBucket().Key([]byte("reachability-reindex-root"))
func reachabilityKey(hash *daghash.Hash) *database.Key {
return reachabilityDataBucket.Key(hash[:])
}
// ReachabilityDataCursor opens a cursor over all the
// reachability data entries.
func ReachabilityDataCursor(context Context) (database.Cursor, error) {
accessor, err := context.accessor()
if err != nil {
return nil, err
}
return accessor.Cursor(reachabilityDataBucket)
}
// StoreReachabilityData stores the reachability data of a block by its hash.
func StoreReachabilityData(context Context, blockHash *daghash.Hash, reachabilityData []byte) error {
accessor, err := context.accessor()
if err != nil {
return err
}
key := reachabilityKey(blockHash)
return accessor.Put(key, reachabilityData)
}
// ClearReachabilityData clears the reachability data
// from database.
func ClearReachabilityData(dbTx *TxContext) error {
return clearBucket(dbTx, reachabilityDataBucket)
}
// StoreReachabilityReindexRoot stores the reachability reindex root in the database.
func StoreReachabilityReindexRoot(context Context, reachabilityReindexRoot *daghash.Hash) error {
accessor, err := context.accessor()
if err != nil {
return err
}
return accessor.Put(reachabilityReindexKey, reachabilityReindexRoot[:])
}
// FetchReachabilityReindexRoot retrieves the reachability reindex root from the database.
// Returns ErrNotFound if the state is missing from the database.
func FetchReachabilityReindexRoot(context Context) (*daghash.Hash, error) {
accessor, err := context.accessor()
if err != nil {
return nil, err
}
bytes, err := accessor.Get(reachabilityReindexKey)
if err != nil {
return nil, err
}
return daghash.NewHash(bytes)
}