lotus/chain/badtscache.go

36 lines
619 B
Go
Raw Permalink Normal View History

2019-10-09 08:50:57 +00:00
package chain
import (
"github.com/filecoin-project/lotus/build"
2019-10-09 12:23:45 +00:00
lru "github.com/hashicorp/golang-lru"
2019-10-09 08:50:57 +00:00
"github.com/ipfs/go-cid"
)
type BadBlockCache struct {
2019-10-09 12:23:45 +00:00
badBlocks *lru.ARCCache
2019-10-09 08:50:57 +00:00
}
func NewBadBlockCache() *BadBlockCache {
2019-10-09 12:55:27 +00:00
cache, err := lru.NewARC(build.BadBlockCacheSize)
2019-10-09 12:23:45 +00:00
if err != nil {
2019-11-16 23:41:14 +00:00
panic(err) // ok
2019-10-09 12:23:45 +00:00
}
2019-10-09 08:50:57 +00:00
return &BadBlockCache{
2019-10-09 12:23:45 +00:00
badBlocks: cache,
2019-10-09 08:50:57 +00:00
}
}
func (bts *BadBlockCache) Add(c cid.Cid, reason string) {
bts.badBlocks.Add(c, reason)
2019-10-09 08:50:57 +00:00
}
func (bts *BadBlockCache) Has(c cid.Cid) (string, bool) {
rval, ok := bts.badBlocks.Get(c)
if !ok {
return "", false
}
return rval.(string), true
2019-10-09 08:50:57 +00:00
}