close method

  1. @override
Future<void> close()
override

Stops accepting requests and releases transport resources.

Implementation

@override
Future<void> close() {
  return _closing ??= Future<void>.microtask(() async {
    _client.close();
    final timer = Timer(_options.shutdownTimeout, () {
      for (final token in _active.keys.toList()) {
        token.cancel('Transport shutdown.');
      }
      _client.close(force: true);
    });
    try {
      await Future.wait(_active.values.map((done) => done.future).toList());
    } finally {
      timer.cancel();
      _client.close(force: true);
    }
  });
}