kubo/blocks/set/dbset.go

49 lines
1.0 KiB
Go

package set
import (
ds "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-datastore"
"github.com/ipfs/go-ipfs/blocks/bloom"
key "github.com/ipfs/go-ipfs/blocks/key"
)
type datastoreBlockSet struct {
dstore ds.Datastore
bset BlockSet
}
// NewDBWrapperSet returns a new blockset wrapping a given datastore
func NewDBWrapperSet(d ds.Datastore, bset BlockSet) BlockSet {
return &datastoreBlockSet{
dstore: d,
bset: bset,
}
}
func (d *datastoreBlockSet) AddBlock(k key.Key) {
err := d.dstore.Put(k.DsKey(), []byte{})
if err != nil {
log.Debugf("blockset put error: %s", err)
}
d.bset.AddBlock(k)
}
func (d *datastoreBlockSet) RemoveBlock(k key.Key) {
d.bset.RemoveBlock(k)
if !d.bset.HasKey(k) {
d.dstore.Delete(k.DsKey())
}
}
func (d *datastoreBlockSet) HasKey(k key.Key) bool {
return d.bset.HasKey(k)
}
func (d *datastoreBlockSet) GetBloomFilter() bloom.Filter {
return d.bset.GetBloomFilter()
}
func (d *datastoreBlockSet) GetKeys() []key.Key {
return d.bset.GetKeys()
}