}
}()
+ donec, donecF := done.WaitC()
+ defer donecF()
+ osignal, osignalF := o.signal.WaitC()
+ defer osignalF()
+
for {
select {
- case <-done.WaitC():
+ case <-donec:
return
case t := <-o.SendChan:
if !done.Islive() {
return
}
c.SetWriteDeadline(time.Now().Add(time.Millisecond * time.Duration(o.TO)))
- case <-o.signal.WaitC():
+ case <-osignal:
if !done.Islive() {
return
}
o.err = err
}
select {
- case <-done.WaitC():
+ case <-donec:
case <-time.After(time.Second):
}
return
go func(ticker_ping *time.Ticker) {
defer ticker_ping.Stop()
+
+ osignal, osignalF := o.signal.WaitC()
+ defer osignalF()
for {
select {
case <-ticker_ping.C:
if !o.Ping.had_pong {
- o.err = errors.New(`Pong fail!`)
+ o.err = errors.New("PongFail")
o.Close()
return
}
Msg: o.Ping.Msg,
}
o.Ping.had_pong = false
- case <-o.signal.Chan:
+ case <-osignal:
return
}
}