func (queue *Queue) getCWStatsSet(f getUsageFunc) (*ecstcs.CWStatsSet, error) {
	queue.lock.Lock()
	defer queue.lock.Unlock()

	queueLength := len(queue.buffer)
	if queueLength < 2 {
		// Need at least 2 data points to calculate this.
		return nil, fmt.Errorf("No data in the queue")
	}

	var min, max, sum float64
	var sampleCount int64
	min = math.MaxFloat64
	max = -math.MaxFloat64
	sum = 0
	sampleCount = 0

	for _, stat := range queue.buffer {
		perc := f(&stat)
		if math.IsNaN(perc) {
			continue
		}

		min = math.Min(min, perc)
		max = math.Max(max, perc)
		sampleCount++
		sum += perc
	}

	return &ecstcs.CWStatsSet{
		Max:         &max,
		Min:         &min,
		SampleCount: &sampleCount,
		Sum:         &sum,
	}, nil
}
func (queue *Queue) getCWStatsSet(f getUsageFunc) (*ecstcs.CWStatsSet, error) {
	queue.lock.Lock()
	defer queue.lock.Unlock()

	queueLength := len(queue.buffer)
	if queueLength < 2 {
		
		return nil, fmt.Errorf("No data in the queue")
	}

	var min, max, sum float64
	var sampleCount int64
	min = math.MaxFloat64
	max = -math.MaxFloat64
	sum = 0
	sampleCount = 0

	for _, stat := range queue.buffer {
		perc := f(&stat)
		if math.IsNaN(perc) {
			continue
		}

		min = math.Min(min, perc)
		max = math.Max(max, perc)
		sampleCount++
		sum += perc
	}

	return &ecstcs.CWStatsSet{
		Max:         &max,
		Min:         &min,
		SampleCount: &sampleCount,
		Sum:         &sum,
	}, nil
}
func ( queue * Queue ) getCWStatsSet ( f getUsageFunc ) ( * ecstcs . CWStatsSet , error ) { queue . lock . Lock ( ) defer queue . lock . Unlock ( ) queueLength := len ( queue . buffer ) if queueLength < 2 { // Need at least 2 data points to calculate this. return nil , fmt . Errorf ( " " ) } var min , max , sum float64 var sampleCount int64 min = math . MaxFloat64 max = - math . MaxFloat64 sum = 0 sampleCount = 0 for _ , stat := range queue . buffer { perc := f ( & stat ) if math . IsNaN ( perc ) { continue } min = math . Min ( min , perc ) max = math . Max ( max , perc ) sampleCount ++ sum += perc } return & ecstcs . CWStatsSet { Max : & max , Min : & min , SampleCount : & sampleCount , Sum : & sum , } , nil }
// getCWStatsSet gets the stats set for either CPU or Memory based on the
// function pointer.
getCWStatsSet gets the stats set for either CPU or Memory based on the function pointer .