flush method

Future<void> flush()

Flush all pending events to every configured sink.

Implementation

Future<void> flush() async {
  if (_batch.isEmpty) return;

  // Include any completed performance metrics as events.
  _flushPerformanceMetrics();

  final events = _batch.drain();
  if (events.isEmpty) return;

  final futures = <Future<bool>>[];
  for (final sink in _config.sinks) {
    futures.add(_sendWithErrorHandling(sink, events));
  }
  final results = await Future.wait(futures);

  final successCount = results.where((r) => r).length;
  if (successCount > 0) {
    _totalFlushed += events.length;
  } else if (_config.sinks.isNotEmpty) {
    _totalDropped += events.length;
  }
}