func()

in gdbclient/internal/pool/conn.go [229:267]


func (cn *ConnWebSocket) readResponse() {
	var errorTimes = 0

	for {
		if cn.brokenOrClosed() {
			internal.Logger.Info("conn read routine exit", zapPtr(cn), zap.Time("time", time.Now()))
			return
		}

		var msg []byte
		var err error
		var response *graphsonv3.Response

		// read response as block, exit by io close signal
		if err = cn.netConn.SetReadDeadline(cn.deadline(0)); err == nil {
			if _, msg, err = cn.netConn.ReadMessage(); err == nil {
				response, err = graphsonv3.ReadResponse(msg)
			}
		}
		// handle response and tick future
		if response != nil {
			cn.handleResponse(response)
		}

		// check errors
		if err != nil {
			errorTimes++
			if errorTimes > 10 {
				cn._broken = true
				cn.lastIoError = err
				_ = cn.notifier != nil && cn.notifier()
				internal.Logger.Error("conn read broken", zapPtr(cn), zap.Time("time", time.Now()), zap.Error(err))
				return
			}
		} else {
			errorTimes = 0
		}
	}
}