rpc: subscribe on reconnection (#689)

* rpc: subscribe on reconnection

* rpc: fix unit tests
This commit is contained in:
Alexandre Thibault
2017-09-29 11:31:39 +02:00
committed by Zach Ramsay
parent b61f5482d4
commit ce36a0111a
3 changed files with 17 additions and 2 deletions

View File

@ -41,8 +41,9 @@ type WSClient struct {
PingPongLatencyTimer metrics.Timer
// user facing channels, closed only when the client is being stopped.
ResultsCh chan json.RawMessage
ErrorsCh chan error
ResultsCh chan json.RawMessage
ErrorsCh chan error
ReconnectCh chan bool
// internal channels
send chan types.RPCRequest // user requests
@ -139,6 +140,7 @@ func (c *WSClient) OnStart() error {
c.ResultsCh = make(chan json.RawMessage)
c.ErrorsCh = make(chan error)
c.ReconnectCh = make(chan bool)
c.send = make(chan types.RPCRequest)
// 1 additional error may come from the read/write
@ -254,6 +256,7 @@ func (c *WSClient) reconnect() error {
c.Logger.Error("failed to redial", "err", err)
} else {
c.Logger.Info("reconnected")
c.ReconnectCh <- true
return nil
}