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