add method

  1. @override
void add(
  1. List<int> data
)
override

Adds a data event to the sink.

Must not be called on a closed sink.

Implementation

@override
void add(List<int> data) {
  if (!isOpen && isBuffered) {
    throw ResponseContext.closed();
  } else if (!isBuffered) {
    if (_isClosed) return;

    if (_streamInitialized || _isPush) {
      _openStream();
      _write(data);
    } else if (_finalizing != null || _needsFinalizers) {
      // Headers wait for the finalizers; send this data after them.
      _queued.add(data);
      _commit().catchError((Object e, StackTrace st) {
        _finalizerError ??= e;
        _finalizerStackTrace ??= st;
      });
    } else {
      _openStream();
      _write(data);
    }
  } else {
    buffer!.add(data);
  }
}