processEvent method

Future<void> processEvent(
  1. ObslyEvent event
)

Process an event through the appropriate rate limiter based on event type

Implementation

Future<void> processEvent(ObslyEvent event) async {
  try {
    // Check if rate limiting is globally disabled
    final config = ConfigController.instance.config;
    if (config?.enableRateLimit != true) {
      ObslyLogger.verbose(
          'Rate limiting is disabled, processing event directly');
      await _originalEventProcessor(event);
      return;
    }

    final RateLimiter<ObslyEvent>? rateLimiter =
        _getRateLimiterForEvent(event);

    if (rateLimiter != null) {
      await rateLimiter.call(event);
    } else {
      // Fallback to direct processing if no specific rate limiter is found
      ObslyLogger.warn(
          'No rate limiter found for event type: ${event.type}, processing directly');
      await _originalEventProcessor(event);
    }
  } catch (e, stackTrace) {
    ObslyLogger.error(
        'Error processing event through rate limiter: $e', e, stackTrace);
  }
}