drainWrites method
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();
}
}