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{}