4
4
"sync"
5
5
"sync/atomic"
6
6
"time"
7
-
8
- "github.com/filecoin-project/go-clock"
9
7
)
10
8
11
9
const (
@@ -43,7 +41,6 @@ type ConnectivityChecker struct {
43
41
44
42
online atomic.Bool
45
43
46
- clock clock.Clock
47
44
lastCheck time.Time
48
45
onlineCheckInterval time.Duration // minimum check interval when online
49
46
@@ -64,7 +61,6 @@ func New(checkFunc func() bool, opts ...Option) (*ConnectivityChecker, error) {
64
61
c := & ConnectivityChecker {
65
62
done : make (chan struct {}),
66
63
checkFunc : checkFunc ,
67
- clock : cfg .clock ,
68
64
onlineCheckInterval : cfg .onlineCheckInterval ,
69
65
onOffline : cfg .onOffline ,
70
66
onOnline : cfg .onOnline ,
@@ -139,7 +135,7 @@ func (c *ConnectivityChecker) TriggerCheck() {
139
135
c .mutex .Unlock ()
140
136
return
141
137
}
142
- if c .online .Load () && c . clock . Now (). Sub (c .lastCheck ) < c .onlineCheckInterval {
138
+ if c .online .Load () && time . Since (c .lastCheck ) < c .onlineCheckInterval {
143
139
c .mutex .Unlock ()
144
140
return // last check was too recent
145
141
}
@@ -148,7 +144,7 @@ func (c *ConnectivityChecker) TriggerCheck() {
148
144
defer c .mutex .Unlock ()
149
145
150
146
if c .checkFunc () {
151
- c .lastCheck = c . clock .Now ()
147
+ c .lastCheck = time .Now ()
152
148
return
153
149
}
154
150
@@ -165,13 +161,20 @@ func (c *ConnectivityChecker) TriggerCheck() {
165
161
func (c * ConnectivityChecker ) probeLoop (init bool ) {
166
162
var offlineC <- chan time.Time
167
163
if ! init {
168
- offlineTimer := c .clock .Timer (c .offlineDelay )
169
- defer offlineTimer .Stop ()
170
- offlineC = offlineTimer .C
164
+ if c .offlineDelay == 0 {
165
+ if c .onOffline != nil {
166
+ // Online -> Offline
167
+ c .onOffline ()
168
+ }
169
+ } else {
170
+ offlineTimer := time .NewTimer (c .offlineDelay )
171
+ defer offlineTimer .Stop ()
172
+ offlineC = offlineTimer .C
173
+ }
171
174
}
172
175
173
176
delay := initialBackoffDelay
174
- timer := c . clock . Timer (delay )
177
+ timer := time . NewTimer (delay )
175
178
defer timer .Stop ()
176
179
for {
177
180
select {
@@ -202,7 +205,7 @@ func (c *ConnectivityChecker) probe() bool {
202
205
// Node is back Online.
203
206
c .online .Store (true )
204
207
205
- c .lastCheck = c . clock .Now ()
208
+ c .lastCheck = time .Now ()
206
209
if c .onOnline != nil {
207
210
c .onOnline ()
208
211
}
0 commit comments