@@ -13,7 +13,7 @@ import (
13
13
14
14
var log = logging .Logger ("reprovider" )
15
15
16
- type KeyChanFunc func (context.Context ) (<- chan * cid.Cid , error )
16
+ type keyChanFunc func (context.Context ) (<- chan * cid.Cid , error )
17
17
18
18
type Reprovider struct {
19
19
ctx context.Context
@@ -22,19 +22,21 @@ type Reprovider struct {
22
22
// The routing system to provide values through
23
23
rsys routing.ContentRouting
24
24
25
- keyProvider KeyChanFunc
25
+ keyProvider keyChanFunc
26
26
}
27
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 {
29
30
return & Reprovider {
30
31
ctx : ctx ,
31
32
trigger : make (chan context.CancelFunc ),
32
33
33
- rsys : rsys ,
34
+ rsys : rsys ,
34
35
keyProvider : keyProvider ,
35
36
}
36
37
}
37
38
39
+ // ProvideEvery re-provides keys with 'tick' interval
38
40
func (rp * Reprovider ) ProvideEvery (tick time.Duration ) {
39
41
// dont reprovide immediately.
40
42
// may have just started the daemon and shutting it down immediately.
@@ -49,7 +51,7 @@ func (rp *Reprovider) ProvideEvery(tick time.Duration) {
49
51
case <- after :
50
52
}
51
53
52
- err := rp .Reprovide (rp . ctx )
54
+ err := rp .Reprovide ()
53
55
if err != nil {
54
56
log .Debug (err )
55
57
}
@@ -61,14 +63,15 @@ func (rp *Reprovider) ProvideEvery(tick time.Duration) {
61
63
}
62
64
}
63
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 )
66
69
if err != nil {
67
70
return fmt .Errorf ("Failed to get key chan: %s" , err )
68
71
}
69
72
for c := range keychan {
70
73
op := func () error {
71
- err := rp .rsys .Provide (ctx , c , true )
74
+ err := rp .rsys .Provide (rp . ctx , c , true )
72
75
if err != nil {
73
76
log .Debugf ("Failed to provide key: %s" , err )
74
77
}
@@ -86,8 +89,10 @@ func (rp *Reprovider) Reprovide(ctx context.Context) error {
86
89
return nil
87
90
}
88
91
92
+ // Trigger starts reprovision process in rp.ProvideEvery and waits for it
89
93
func (rp * Reprovider ) Trigger (ctx context.Context ) error {
90
94
progressCtx , done := context .WithCancel (ctx )
95
+
91
96
select {
92
97
case <- rp .ctx .Done ():
93
98
return context .Canceled
0 commit comments