drainWrites method

Future<void> drainWrites(
  1. int connectionId, {
  2. Duration? timeout,
})

Implementation

Future<void> drainWrites(int connectionId, {Duration? timeout}) async {
  _requireWriteCompletion();
  RangeError.checkValueInInterval(
    connectionId,
    1,
    0x7fffffff,
    'connectionId',
  );
  if (timeout != null && timeout.isNegative) {
    throw ArgumentError.value(timeout, 'timeout', 'Must not be negative');
  }
  final id = _drainWrites(connectionId);
  _check(id);
  if (id == 0) throw StateError('Native writer returned no barrier receipt');
  final receipt = NativeWriteReceipt._(this, id);
  try {
    if (await receipt.wait(timeout: timeout) != NativeWriteOutcome.written) {
      throw StateError('Native writer abandoned the queued flush barrier');
    }
  } finally {
    receipt.dispose();
  }
}