github.com/keltia/go-ipfs@v0.3.8-0.20150909044612-210793031c63/blocks/set/dbset.go (about) 1 package set 2 3 import ( 4 ds "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-datastore" 5 "github.com/ipfs/go-ipfs/blocks/bloom" 6 key "github.com/ipfs/go-ipfs/blocks/key" 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 key.Key) { 23 err := d.dstore.Put(k.DsKey(), []byte{}) 24 if err != nil { 25 log.Debugf("blockset put error: %s", err) 26 } 27 28 d.bset.AddBlock(k) 29 } 30 31 func (d *datastoreBlockSet) RemoveBlock(k key.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 key.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() []key.Key { 47 return d.bset.GetKeys() 48 }