func()

in experiments/client_traffic_ctrl_tasks.go [76:119]


func (e *ExperimentClient) GetTrafficControlTargetData(env, sceneName string, currentTimestamp int64) map[string]model.TrafficControlTarget {
	if currentTimestamp == 0 {
		currentTimestamp = time.Now().Unix()
	}

	trafficControlTargets := make(map[string]model.TrafficControlTarget)

	var data = make(map[string][]model.TrafficControlTask, 0)

	if env == common.Environment_Prepub_Desc {
		data = e.prepubSceneTrafficControlTaskData
	} else if env == common.Environment_Product_Desc {
		data = e.productSceneTrafficControlTaskData
	} else {
		return nil
	}

	for scene, sceneTraffics := range data {
		if sceneName != "" && sceneName != scene {
			continue
		}

		for _, task := range sceneTraffics {
			for i, target := range task.TrafficControlTargets {
				if task.ExecutionTime != "Permanent" {
					startTime, _ := time.Parse(time.RFC3339, target.StartTime)
					endTime, _ := time.Parse(time.RFC3339, target.EndTime)

					if target.Status == common.TrafficControlTargets_Status_Open && startTime.Unix() < currentTimestamp && currentTimestamp <= endTime.Unix() {
						trafficControlTargets[target.TrafficControlTargetId] = task.TrafficControlTargets[i]
					}

				} else {
					if target.Status == common.TrafficControlTargets_Status_Open {
						trafficControlTargets[target.TrafficControlTargetId] = task.TrafficControlTargets[i]
					}
				}

			}
		}
	}

	return trafficControlTargets
}