github.com/zignig/go-ipfs@v0.0.0-20141111235910-c9e5fdf55a52/blocks/set/dbset.go (about) 1 package set 2 3 import ( 4 ds "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-datastore" 5 "github.com/jbenet/go-ipfs/blocks/bloom" 6 "github.com/jbenet/go-ipfs/util" 7 ) 8 9 type datastoreBlockSet struct { 10 dstore ds.Datastore 11 bset BlockSet 12 } 13 14 // NewDBWrapperSet returns a new blockset wrapping a given datastore 15 func NewDBWrapperSet(d ds.Datastore, bset BlockSet) BlockSet { 16 return &datastoreBlockSet{ 17 dstore: d, 18 bset: bset, 19 } 20 } 21 22 func (d *datastoreBlockSet) AddBlock(k util.Key) { 23 err := d.dstore.Put(k.DsKey(), []byte{}) 24 if err != nil { 25 log.Errorf("blockset put error: %s", err) 26 } 27 28 d.bset.AddBlock(k) 29 } 30 31 func (d *datastoreBlockSet) RemoveBlock(k util.Key) { 32 d.bset.RemoveBlock(k) 33 if !d.bset.HasKey(k) { 34 d.dstore.Delete(k.DsKey()) 35 } 36 } 37 38 func (d *datastoreBlockSet) HasKey(k util.Key) bool { 39 return d.bset.HasKey(k) 40 } 41 42 func (d *datastoreBlockSet) GetBloomFilter() bloom.Filter { 43 return d.bset.GetBloomFilter() 44 } 45 46 func (d *datastoreBlockSet) GetKeys() []util.Key { 47 return d.bset.GetKeys() 48 }