mirror of
https://github.com/ipfs/kubo.git
synced 2025-09-13 17:20:27 +08:00
49 lines
1.1 KiB
Go
49 lines
1.1 KiB
Go
package datastore2
|
|
|
|
import (
|
|
ds "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-datastore"
|
|
dsq "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-datastore/query"
|
|
|
|
delay "github.com/ipfs/go-ipfs/thirdparty/delay"
|
|
)
|
|
|
|
func WithDelay(ds ds.Datastore, delay delay.D) ds.Datastore {
|
|
return &delayed{ds: ds, delay: delay}
|
|
}
|
|
|
|
type delayed struct {
|
|
ds ds.Datastore
|
|
delay delay.D
|
|
}
|
|
|
|
func (dds *delayed) Put(key ds.Key, value interface{}) (err error) {
|
|
dds.delay.Wait()
|
|
return dds.ds.Put(key, value)
|
|
}
|
|
|
|
func (dds *delayed) Get(key ds.Key) (value interface{}, err error) {
|
|
dds.delay.Wait()
|
|
return dds.ds.Get(key)
|
|
}
|
|
|
|
func (dds *delayed) Has(key ds.Key) (exists bool, err error) {
|
|
dds.delay.Wait()
|
|
return dds.ds.Has(key)
|
|
}
|
|
|
|
func (dds *delayed) Delete(key ds.Key) (err error) {
|
|
dds.delay.Wait()
|
|
return dds.ds.Delete(key)
|
|
}
|
|
|
|
func (dds *delayed) Query(q dsq.Query) (dsq.Results, error) {
|
|
dds.delay.Wait()
|
|
return dds.ds.Query(q)
|
|
}
|
|
|
|
func (dds *delayed) Batch() (ds.Batch, error) {
|
|
return ds.NewBasicBatch(dds), nil
|
|
}
|
|
|
|
var _ ds.Datastore = &delayed{}
|