processEvent method
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);
}
}