github.com/keltia/go-ipfs@v0.3.8-0.20150909044612-210793031c63/util/datastore2/delayed.go (about) 1 package datastore2 2 3 import ( 4 ds "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-datastore" 5 dsq "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-datastore/query" 6 7 delay "github.com/ipfs/go-ipfs/thirdparty/delay" 8 ) 9 10 func WithDelay(ds ds.Datastore, delay delay.D) ds.Datastore { 11 return &delayed{ds: ds, delay: delay} 12 } 13 14 type delayed struct { 15 ds ds.Datastore 16 delay delay.D 17 } 18 19 func (dds *delayed) Put(key ds.Key, value interface{}) (err error) { 20 dds.delay.Wait() 21 return dds.ds.Put(key, value) 22 } 23 24 func (dds *delayed) Get(key ds.Key) (value interface{}, err error) { 25 dds.delay.Wait() 26 return dds.ds.Get(key) 27 } 28 29 func (dds *delayed) Has(key ds.Key) (exists bool, err error) { 30 dds.delay.Wait() 31 return dds.ds.Has(key) 32 } 33 34 func (dds *delayed) Delete(key ds.Key) (err error) { 35 dds.delay.Wait() 36 return dds.ds.Delete(key) 37 } 38 39 func (dds *delayed) Query(q dsq.Query) (dsq.Results, error) { 40 dds.delay.Wait() 41 return dds.ds.Query(q) 42 } 43 44 func (dds *delayed) Batch() (ds.Batch, error) { 45 return ds.NewBasicBatch(dds), nil 46 } 47 48 var _ ds.Datastore = &delayed{}