process method

  1. @override
void process({
  1. required List<ContextualTelemetryItem> contextualTelemetryItems,
})
override

Add contextualTelemetryItems to the buffer, automatically forwarding telemetry if the buffer is full.

Even if the buffer is not filled, it will eventually be forwarded once flushDelay elapses.

Implementation

@override
void process({
  required List<ContextualTelemetryItem> contextualTelemetryItems,
}) {
  for (final contextualTelemetryItem in contextualTelemetryItems) {
    _buffer.add(contextualTelemetryItem);

    if (_buffer.length > capacity) {
      // Capacity reached, so attempt to flush.
      flush();
    } else if (flushDelay == Duration.zero) {
      // Immediate flush.
      flush();
    } else {
      // Delayed flush if not already instigated.
      _flushTimer ??= Timer(
        flushDelay,
        flush,
      );
    }
  }
}