ing
This commit is contained in:
parent
41d269f268
commit
e1f57d373a
70
client.go
70
client.go
|
@ -45,8 +45,7 @@ func (c *client) Start() {
|
|||
|
||||
c.ch.OnStart()
|
||||
|
||||
c.stopWg.Add(1)
|
||||
go runClient(c)
|
||||
runClient(c)
|
||||
}
|
||||
|
||||
func (c *client) Stop() {
|
||||
|
@ -66,44 +65,43 @@ func runClient(c *client) {
|
|||
var err error
|
||||
var stopping atomic.Value
|
||||
|
||||
for {
|
||||
dialChan := make(chan struct{})
|
||||
go func() {
|
||||
if conn, err = c.ch.Dial(); err != nil {
|
||||
if stopping.Load() == nil {
|
||||
logging.Logger.Error(fmt.Sprintf("Client: [%s].Cannot establish rpc connection: [%s]", c.ch.GetAddr(), err))
|
||||
}
|
||||
dialChan := make(chan struct{})
|
||||
go func() {
|
||||
if conn, err = c.ch.Dial(); err != nil {
|
||||
if stopping.Load() == nil {
|
||||
logging.Logger.Error(fmt.Sprintf("Client: [%s].Cannot establish rpc connection: [%s]", c.ch.GetAddr(), err))
|
||||
}
|
||||
close(dialChan)
|
||||
}()
|
||||
|
||||
select {
|
||||
case <-c.stopChan:
|
||||
stopping.Store(true)
|
||||
<-dialChan
|
||||
return
|
||||
case <-dialChan:
|
||||
c.Stats.incDialCalls()
|
||||
}
|
||||
close(dialChan)
|
||||
}()
|
||||
|
||||
if err != nil {
|
||||
c.Stats.incDialErrors()
|
||||
select {
|
||||
case <-c.stopChan:
|
||||
return
|
||||
case <-time.After(time.Second):
|
||||
}
|
||||
continue
|
||||
}
|
||||
|
||||
handleClientConnection(c, conn)
|
||||
|
||||
select {
|
||||
case <-c.stopChan:
|
||||
return
|
||||
default:
|
||||
}
|
||||
select {
|
||||
case <-c.stopChan:
|
||||
stopping.Store(true)
|
||||
<-dialChan
|
||||
return
|
||||
case <-dialChan:
|
||||
c.Stats.incDialCalls()
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
c.Stats.incDialErrors()
|
||||
select {
|
||||
case <-c.stopChan:
|
||||
return
|
||||
case <-time.After(time.Second):
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
go handleClientConnection(c, conn)
|
||||
|
||||
select {
|
||||
case <-c.stopChan:
|
||||
return
|
||||
default:
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func handleClientConnection(c *client, conn io.ReadWriteCloser) {
|
||||
|
|
Loading…
Reference in New Issue
Block a user