@cryptotaxi247 / kubo / commits / c3b3d7319

feat(util/ds2/delayed) add delayed datastore

License: MIT Signed-off-by: Brian Tiger Chow <brian@perfmode.com>

Brian Tiger Chow committed Dec 12, 2014 at 22:12 UTC c3b3d7319e06766c7bf3cb3f8ddafe90559750cb
1 file changed +42
util/datastore2/delayed.go new
+42
@@ -0,0 +1,42 @@
1 +package datastore2
2 +
3 +import (
4 + datastore "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-datastore"
5 + delay "github.com/jbenet/go-ipfs/util/delay"
6 +)
7 +
8 +func WithDelay(ds datastore.Datastore, delay delay.D) datastore.Datastore {
9 + return &delayed{ds: ds, delay: delay}
10 +}
11 +
12 +type delayed struct {
13 + ds datastore.Datastore
14 + delay delay.D
15 +}
16 +
17 +func (dds *delayed) Put(key datastore.Key, value interface{}) (err error) {
18 + dds.delay.Wait()
19 + return dds.ds.Put(key, value)
20 +}
21 +
22 +func (dds *delayed) Get(key datastore.Key) (value interface{}, err error) {
23 + dds.delay.Wait()
24 + return dds.ds.Get(key)
25 +}
26 +
27 +func (dds *delayed) Has(key datastore.Key) (exists bool, err error) {
28 + dds.delay.Wait()
29 + return dds.ds.Has(key)
30 +}
31 +
32 +func (dds *delayed) Delete(key datastore.Key) (err error) {
33 + dds.delay.Wait()
34 + return dds.ds.Delete(key)
35 +}
36 +
37 +func (dds *delayed) KeyList() ([]datastore.Key, error) {
38 + dds.delay.Wait()
39 + return dds.ds.KeyList()
40 +}
41 +
42 +var _ datastore.Datastore = &delayed{}