start method

Future<void> start()

Inicia el controlador de eventos

Implementation

Future<void> start() async {
  if (_isStarted) return;

  try {
    // IdManager should already be initialized by the SDK, but verify for safety
    if (!idManager.isInitialized) {
      await idManager.initialize();
    }

    // Load configuration for automatic sending
    _loadSendingConfiguration();

    // Initialize rate limit controller
    _initializeRateLimit();

    // Configure automatic sending timer
    _startPeriodicSending();

    // Listen to session events to flush before changes
    _sessionSubscription = SessionController.instance.onSessionEvent.listen(
      _handleSessionEvent,
    );

    _isStarted = true;
    ObslyLogger.debug('EventController started with session: ${idManager.getSessionId()}, '
        'messengerInterval: ${_messengerIntervalSeconds}s, bufferSize: $_bufferSize');
  } catch (e, stackTrace) {
    ObslyLogger.error('Failed to start EventController: $e', e, stackTrace);
    rethrow;
  }
}