@cryptotaxi247 / kubo / commits / 3917d4dd1

reprovider: Make codeclimate happier

License: MIT Signed-off-by: Łukasz Magiera <magik6k@gmail.com>

Łukasz Magiera committed Aug 1, 2017 at 18:21 UTC 3917d4dd18d4efd2e06189e07ffe57e7b86662a4
2 files changed +17 -10
exchange/reprovide/providers.go
+4 -2
@@ -11,13 +11,15 @@ import (
11 cid "gx/ipfs/QmTprEaAA2A9bst5XH7exuyi5KzNMK3SEDNN8rBDnKWcUS/go-cid"
12 )
13
14 -func NewBlockstoreProvider(bstore blocks.Blockstore) KeyChanFunc {
14 +// NewBlockstoreProvider returns key provider using bstore.AllKeysChan
15 +func NewBlockstoreProvider(bstore blocks.Blockstore) keyChanFunc {
16 return func(ctx context.Context) (<-chan *cid.Cid, error) {
17 return bstore.AllKeysChan(ctx)
18 }
19 }
20
20 -func NewPinnedProvider(pinning pin.Pinner, dag merkledag.DAGService, onlyRoots bool) KeyChanFunc {
21 +// NewPinnedProvider returns provider supplying pinned keys
22 +func NewPinnedProvider(pinning pin.Pinner, dag merkledag.DAGService, onlyRoots bool) keyChanFunc {
23 return func(ctx context.Context) (<-chan *cid.Cid, error) {
24 set, err := pinSet(ctx, pinning, dag, onlyRoots)
25 if err != nil {
exchange/reprovide/reprovide.go
+13 -8
@@ -13,7 +13,7 @@ import (
13
14 var log = logging.Logger("reprovider")
15
16 -type KeyChanFunc func(context.Context) (<-chan *cid.Cid, error)
16 +type keyChanFunc func(context.Context) (<-chan *cid.Cid, error)
17
18 type Reprovider struct {
19 ctx context.Context
@@ -22,19 +22,21 @@ type Reprovider struct {
22 // The routing system to provide values through
23 rsys routing.ContentRouting
24
25 - keyProvider KeyChanFunc
25 + keyProvider keyChanFunc
26 }
27
28 -func NewReprovider(ctx context.Context, rsys routing.ContentRouting, keyProvider KeyChanFunc) *Reprovider {
28 +// NewReprovider creates new Reprovider instance.
29 +func NewReprovider(ctx context.Context, rsys routing.ContentRouting, keyProvider keyChanFunc) *Reprovider {
30 return &Reprovider{
31 ctx: ctx,
32 trigger: make(chan context.CancelFunc),
33
33 - rsys: rsys,
34 + rsys: rsys,
35 keyProvider: keyProvider,
36 }
37 }
38
39 +// ProvideEvery re-provides keys with 'tick' interval
40 func (rp *Reprovider) ProvideEvery(tick time.Duration) {
41 // dont reprovide immediately.
42 // may have just started the daemon and shutting it down immediately.
@@ -49,7 +51,7 @@ func (rp *Reprovider) ProvideEvery(tick time.Duration) {
51 case <-after:
52 }
53
52 - err := rp.Reprovide(rp.ctx)
54 + err := rp.Reprovide()
55 if err != nil {
56 log.Debug(err)
57 }
@@ -61,14 +63,15 @@ func (rp *Reprovider) ProvideEvery(tick time.Duration) {
63 }
64 }
65
64 -func (rp *Reprovider) Reprovide(ctx context.Context) error {
65 - keychan, err := rp.keyProvider(ctx)
66 +// Reprovide registers all keys given by rp.keyProvider to libp2p content routing
67 +func (rp *Reprovider) Reprovide() error {
68 + keychan, err := rp.keyProvider(rp.ctx)
69 if err != nil {
70 return fmt.Errorf("Failed to get key chan: %s", err)
71 }
72 for c := range keychan {
73 op := func() error {
71 - err := rp.rsys.Provide(ctx, c, true)
74 + err := rp.rsys.Provide(rp.ctx, c, true)
75 if err != nil {
76 log.Debugf("Failed to provide key: %s", err)
77 }
@@ -86,8 +89,10 @@ func (rp *Reprovider) Reprovide(ctx context.Context) error {
89 return nil
90 }
91
92 +// Trigger starts reprovision process in rp.ProvideEvery and waits for it
93 func (rp *Reprovider) Trigger(ctx context.Context) error {
94 progressCtx, done := context.WithCancel(ctx)
95 +
96 select {
97 case <-rp.ctx.Done():
98 return context.Canceled