func()

in translator/translate/otel/processor/awsapplicationsignals/translator.go [112:172]


func (t *translator) translateMetricLimiterConfig(conf *confmap.Conf, configKey []string) (*appsignalsconfig.LimiterConfig, error) {
	limiterConfigKey := common.ConfigKey(configKey[0], "limiter")
	if !conf.IsSet(limiterConfigKey) {
		limiterConfigKey = common.ConfigKey(configKey[1], "limiter")
		if !conf.IsSet(limiterConfigKey) {
			return nil, nil
		}
	}

	configJson, ok := conf.Get(limiterConfigKey).(map[string]interface{})
	if !ok {
		return nil, errors.New("type conversion error: limiter is not an object")
	}

	limiterConfig := appsignalsconfig.NewDefaultLimiterConfig()
	if rawVal, exists := configJson["drop_threshold"]; exists {
		if val, ok := rawVal.(float64); !ok {
			return nil, errors.New("type conversion error: drop_threshold is not a number")
		} else {
			limiterConfig.Threshold = int(val)
		}
	}
	if rawVal, exists := configJson["disabled"]; exists {
		if val, ok := rawVal.(bool); !ok {
			return nil, errors.New("type conversion error: disabled is not a boolean")
		} else {
			limiterConfig.Disabled = val
		}
	}
	if rawVal, exists := configJson["log_dropped_metrics"]; exists {
		if val, ok := rawVal.(bool); !ok {
			return nil, errors.New("type conversion error: log_dropped_metrics is not a boolean")
		} else {
			limiterConfig.LogDroppedMetrics = val
		}
	}
	if rawVal, exists := configJson["garbage_collection_interval"]; exists {
		if val, ok := rawVal.(string); !ok {
			return nil, errors.New("type conversion error: garbage_collection_interval is not a string")
		} else {
			if interval, err := time.ParseDuration(val); err != nil {
				return nil, errors.New("type conversion error: garbage_collection_interval is not a time string")
			} else {
				limiterConfig.GarbageCollectionInterval = interval
			}
		}
	}
	if rawVal, exists := configJson["rotation_interval"]; exists {
		if val, ok := rawVal.(string); !ok {
			return nil, errors.New("type conversion error: rotation_interval is not a string")
		} else {
			if interval, err := time.ParseDuration(val); err != nil {
				return nil, errors.New("type conversion error: rotation_interval is not a time string")
			} else {
				limiterConfig.RotationInterval = interval
			}
		}
	}
	return limiterConfig, nil

}