NapiStream<T, S extends Object> constructor

NapiStream<T, S extends Object>(
  1. Stream<T> source, {
  2. required S snapshot(
    1. T
    ),
  3. void releaseSnapshot(
    1. S
    )?,
  4. required List<Object?> roots,
  5. ResourceOperation? operation,
  6. List<AbortSignal> signals = const [],
  7. int capacity = 64,
})

Implementation

NapiStream(
  Stream<T> source, {
  required this._snapshot,
  this._releaseSnapshot,
  required List<Object?> roots,
  ResourceOperation? operation,
  List<AbortSignal> signals = const [],
  this.capacity = 64,
}) : _source = source,
     retainedInputs = List<Object?>.of(roots),
     _operation = operation {
  if (capacity < 1) throw ArgumentError.value(capacity, 'capacity');
  // Observe only this private Dart completion, never a public JS Promise.
  _cancelled.future.then<void>(
    (_) => _didCancel(),
    onError: (Object error, StackTrace stack) => _didCancel(error, stack),
  );
  operation?.attachStream(this, _closeStream);
  if (signals.isNotEmpty && !_terminated) {
    try {
      _attachSignals(signals);
    } catch (_) {
      finishCreation(false);
      rethrow;
    }
  }
}