From 3917d4dd18d4efd2e06189e07ffe57e7b86662a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Magiera?= Date: Tue, 1 Aug 2017 18:21:36 +0200 Subject: [PATCH] reprovider: Make codeclimate happier MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit License: MIT Signed-off-by: Ɓukasz Magiera --- exchange/reprovide/providers.go | 6 ++++-- exchange/reprovide/reprovide.go | 21 +++++++++++++-------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/exchange/reprovide/providers.go b/exchange/reprovide/providers.go index 07ddd99cc..928b979ac 100644 --- a/exchange/reprovide/providers.go +++ b/exchange/reprovide/providers.go @@ -11,13 +11,15 @@ import ( cid "gx/ipfs/QmTprEaAA2A9bst5XH7exuyi5KzNMK3SEDNN8rBDnKWcUS/go-cid" ) -func NewBlockstoreProvider(bstore blocks.Blockstore) KeyChanFunc { +// NewBlockstoreProvider returns key provider using bstore.AllKeysChan +func NewBlockstoreProvider(bstore blocks.Blockstore) keyChanFunc { return func(ctx context.Context) (<-chan *cid.Cid, error) { return bstore.AllKeysChan(ctx) } } -func NewPinnedProvider(pinning pin.Pinner, dag merkledag.DAGService, onlyRoots bool) KeyChanFunc { +// NewPinnedProvider returns provider supplying pinned keys +func NewPinnedProvider(pinning pin.Pinner, dag merkledag.DAGService, onlyRoots bool) keyChanFunc { return func(ctx context.Context) (<-chan *cid.Cid, error) { set, err := pinSet(ctx, pinning, dag, onlyRoots) if err != nil { diff --git a/exchange/reprovide/reprovide.go b/exchange/reprovide/reprovide.go index d84d753e0..852eb512d 100644 --- a/exchange/reprovide/reprovide.go +++ b/exchange/reprovide/reprovide.go @@ -13,7 +13,7 @@ import ( var log = logging.Logger("reprovider") -type KeyChanFunc func(context.Context) (<-chan *cid.Cid, error) +type keyChanFunc func(context.Context) (<-chan *cid.Cid, error) type Reprovider struct { ctx context.Context @@ -22,19 +22,21 @@ type Reprovider struct { // The routing system to provide values through rsys routing.ContentRouting - keyProvider KeyChanFunc + keyProvider keyChanFunc } -func NewReprovider(ctx context.Context, rsys routing.ContentRouting, keyProvider KeyChanFunc) *Reprovider { +// NewReprovider creates new Reprovider instance. +func NewReprovider(ctx context.Context, rsys routing.ContentRouting, keyProvider keyChanFunc) *Reprovider { return &Reprovider{ ctx: ctx, trigger: make(chan context.CancelFunc), - rsys: rsys, + rsys: rsys, keyProvider: keyProvider, } } +// ProvideEvery re-provides keys with 'tick' interval func (rp *Reprovider) ProvideEvery(tick time.Duration) { // dont reprovide immediately. // may have just started the daemon and shutting it down immediately. @@ -49,7 +51,7 @@ func (rp *Reprovider) ProvideEvery(tick time.Duration) { case <-after: } - err := rp.Reprovide(rp.ctx) + err := rp.Reprovide() if err != nil { log.Debug(err) } @@ -61,14 +63,15 @@ func (rp *Reprovider) ProvideEvery(tick time.Duration) { } } -func (rp *Reprovider) Reprovide(ctx context.Context) error { - keychan, err := rp.keyProvider(ctx) +// Reprovide registers all keys given by rp.keyProvider to libp2p content routing +func (rp *Reprovider) Reprovide() error { + keychan, err := rp.keyProvider(rp.ctx) if err != nil { return fmt.Errorf("Failed to get key chan: %s", err) } for c := range keychan { op := func() error { - err := rp.rsys.Provide(ctx, c, true) + err := rp.rsys.Provide(rp.ctx, c, true) if err != nil { log.Debugf("Failed to provide key: %s", err) } @@ -86,8 +89,10 @@ func (rp *Reprovider) Reprovide(ctx context.Context) error { return nil } +// Trigger starts reprovision process in rp.ProvideEvery and waits for it func (rp *Reprovider) Trigger(ctx context.Context) error { progressCtx, done := context.WithCancel(ctx) + select { case <-rp.ctx.Done(): return context.Canceled