Store the backoff in the client struct
This commit is contained in:
parent
c22b7d2a1d
commit
83aef5df7b
@ -7,6 +7,7 @@ import (
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/khlieng/dispatch/Godeps/_workspace/src/github.com/jpillora/backoff"
|
||||
"github.com/khlieng/dispatch/Godeps/_workspace/src/github.com/matryer/resync"
|
||||
)
|
||||
|
||||
@ -26,6 +27,7 @@ type Client struct {
|
||||
connected bool
|
||||
dialer *net.Dialer
|
||||
reader *bufio.Reader
|
||||
backoff *backoff.Backoff
|
||||
out chan string
|
||||
|
||||
quit chan struct{}
|
||||
@ -45,6 +47,9 @@ func NewClient(nick, username string) *Client {
|
||||
out: make(chan string, 32),
|
||||
quit: make(chan struct{}),
|
||||
reconnect: make(chan struct{}),
|
||||
backoff: &backoff.Backoff{
|
||||
Jitter: true,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -7,8 +7,6 @@ import (
|
||||
"net"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/khlieng/dispatch/Godeps/_workspace/src/github.com/jpillora/backoff"
|
||||
)
|
||||
|
||||
func (c *Client) Connect(address string) {
|
||||
@ -84,10 +82,6 @@ func (c *Client) connect() error {
|
||||
}
|
||||
|
||||
func (c *Client) tryConnect() {
|
||||
b := &backoff.Backoff{
|
||||
Jitter: true,
|
||||
}
|
||||
|
||||
for {
|
||||
select {
|
||||
case <-c.quit:
|
||||
@ -98,10 +92,11 @@ func (c *Client) tryConnect() {
|
||||
|
||||
err := c.connect()
|
||||
if err == nil {
|
||||
c.backoff.Reset()
|
||||
return
|
||||
}
|
||||
|
||||
time.Sleep(b.Duration())
|
||||
time.Sleep(c.backoff.Duration())
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user