code: func (r *RTTStats) UpdateRTT(sendDelta, ackDelay time.Duration, now time.Time) {
  	if sendDelta == utils.InfDuration || sendDelta <= 0 {
  		return
  	}
  
  	// Update r.minRTT first. r.minRTT does not use an rttSample corrected for
  	// ackDelay but the raw observed sendDelta, since poor clock granularity at
  	// the client may cause a high ackDelay to result in underestimation of the
  	// r.minRTT.
  	if r.minRTT == 0 || r.minRTT > sendDelta {
  		r.minRTT = sendDelta
  	}
  
  	// Correct for ackDelay if information received from the peer results in a
  	// an RTT sample at least as large as minRTT. Otherwise, only use the
  	// sendDelta.
  	sample := sendDelta
  	if sample-r.minRTT >= ackDelay {
  		sample -= ackDelay
  	}
  	r.latestRTT = sample
  	// First time call.
  	if r.smoothedRTT == 0 {
  		r.smoothedRTT = sample
  		r.meanDeviation = sample / 2
  	} else {
  		r.meanDeviation = time.Duration(oneMinusBeta*float32(r.meanDeviation/time.Microsecond)+rttBeta*float32(utils.AbsDuration(r.smoothedRTT-sample)/time.Microsecond)) * time.Microsecond
  		r.smoothedRTT = time.Duration((float32(r.smoothedRTT/time.Microsecond)*oneMinusAlpha)+(float32(sample/time.Microsecond)*rttAlpha)) * time.Microsecond
  	}
  }
docs: // UpdateRTT updates the RTT based on a new sample.