()
| 157 | } |
| 158 | |
| 159 | func (cm *ConnMonitor) keepAliveMonitor() { |
| 160 | defer func() { |
| 161 | panichandler.PanicHandler("conncontroller:keepAliveMonitor", recover()) |
| 162 | }() |
| 163 | ticker := time.NewTicker(5 * time.Second) |
| 164 | defer ticker.Stop() |
| 165 | |
| 166 | for { |
| 167 | // check if our client is still the active one |
| 168 | if cm.Conn.GetClient() != cm.Client { |
| 169 | return |
| 170 | } |
| 171 | |
| 172 | select { |
| 173 | case <-ticker.C: |
| 174 | cm.checkConnection() |
| 175 | |
| 176 | case inputTime := <-cm.inputNotifyCh: |
| 177 | select { |
| 178 | case <-time.After(1 * time.Second): |
| 179 | if cm.LastActivityTime.Load() >= inputTime { |
| 180 | break |
| 181 | } |
| 182 | cm.setConnHealthStatus(ConnHealthStatus_Degraded) |
| 183 | cm.checkConnection() |
| 184 | case <-cm.ctx.Done(): |
| 185 | return |
| 186 | } |
| 187 | |
| 188 | case <-cm.ctx.Done(): |
| 189 | return |
| 190 | } |
| 191 | } |
| 192 | } |
| 193 | |
| 194 | func (cm *ConnMonitor) Close() { |
| 195 | if cm.cancelFunc != nil { |
no test coverage detected