Ejemplo n.º 1
0
func populateDataFor(timestamp int64, frame int32, symbol string, results []entities.ResultData, result *entities.ResultResponse) error {
	l := len(_rates)
	addExtendedData := false
	if _rates[l-1].ID > timestamp {
		addExtendedData = true
		frame++
	}
	result.Data = make([]float32, frame)
	result.Time = make([]int64, frame)

	var counter int32 = 1
	var prevRate entities.Rate
	for i := l - 1; i > 0 && counter <= frame; i-- {
		if _rates[i].ID <= timestamp {
			if addExtendedData {
				value, err := prevRate.GetForSymbol(symbol)
				if err != nil {
					return fmt.Errorf("ExtrudeDataFor error: %v", err)
				}
				result.Data[frame-counter] = value
				result.Time[frame-counter] = prevRate.ID
				counter++
				addExtendedData = false
			}
			value, err := _rates[i].GetForSymbol(symbol)
			if err != nil {
				return fmt.Errorf("ExtrudeDataFor error: %v", err)
			}
			result.Data[frame-counter] = value
			result.Time[frame-counter] = _rates[i].ID
			counter++
		}
		prevRate = _rates[i]
	}
	return nil
}