updateRateLimiters method

void updateRateLimiters()

Update rate limiters with custom configurations from ConfigController

Implementation

void updateRateLimiters() {
  final config = ConfigController.instance.config;
  final rateLimitsConfig = config?.rateLimits;

  if (rateLimitsConfig == null) {
    ObslyLogger.debug(
        'No custom rate limits configuration found, using defaults');
    return;
  }

  ObslyLogger.debug('Updating rate limiters with custom configuration');

  // Update each rate limiter if custom config is provided
  if (rateLimitsConfig.base != null) {
    _baseRateLimiter?.dispose();
    _baseRateLimiter = RateLimiterFactory.create(
      _originalEventProcessor,
      RateLimiterFactory.defaultBaseConfig,
      rateLimitsConfig.base,
    );
  }

  if (rateLimitsConfig.request != null) {
    _requestRateLimiter?.dispose();
    _requestRateLimiter = RateLimiterFactory.create(
      _originalEventProcessor,
      RateLimiterFactory.defaultRequestConfig,
      rateLimitsConfig.request,
    );
  }

  if (rateLimitsConfig.tag != null) {
    _tagRateLimiter?.dispose();
    _tagRateLimiter = RateLimiterFactory.create(
      _originalEventProcessor,
      RateLimiterFactory.defaultTagConfig,
      rateLimitsConfig.tag,
    );
  }

  if (rateLimitsConfig.console != null) {
    _consoleRateLimiter?.dispose();
    _consoleRateLimiter = RateLimiterFactory.create(
      _originalEventProcessor,
      RateLimiterFactory.defaultConsoleConfig,
      rateLimitsConfig.console,
    );
  }

  if (rateLimitsConfig.ui != null) {
    _uiRateLimiter?.dispose();
    _uiRateLimiter = RateLimiterFactory.create(
      _originalEventProcessor,
      RateLimiterFactory.defaultUIConfig,
      rateLimitsConfig.ui,
    );
  }

  if (rateLimitsConfig.metric != null) {
    _metricRateLimiter?.dispose();
    _metricRateLimiter = RateLimiterFactory.create(
      _originalEventProcessor,
      RateLimiterFactory.defaultMetricConfig,
      rateLimitsConfig.metric,
    );
  }

  if (rateLimitsConfig.error != null) {
    _errorRateLimiter?.dispose();
    _errorRateLimiter = RateLimiterFactory.create(
      _originalEventProcessor,
      RateLimiterFactory.defaultErrorConfig,
      rateLimitsConfig.error,
    );
  }

  if (rateLimitsConfig.performance != null) {
    _performanceRateLimiter?.dispose();
    _performanceRateLimiter = RateLimiterFactory.create(
      _originalEventProcessor,
      RateLimiterFactory.defaultPerformanceConfig,
      rateLimitsConfig.performance,
    );
  }

  if (rateLimitsConfig.navigation != null) {
    _navigationRateLimiter?.dispose();
    _navigationRateLimiter = RateLimiterFactory.create(
      _originalEventProcessor,
      RateLimiterFactory.defaultNavigationConfig,
      rateLimitsConfig.navigation,
    );
  }

  ObslyLogger.debug('Rate limiters updated successfully');
}