close method

  1. @override
void close()
override

Close the transport

Implementation

@override
void close() {
  if (_isClosed) return;
  _isClosed = true;

  // Terminate session if configured
  if (config.terminateOnClose && _sessionId != null) {
    _terminateSession().catchError((error) {
      _logger.debug('Failed to terminate session: $error');
    });
  }

  // The GET stream loop stops on its own once the client is closed.
  _getStreamActive = false;

  // Clear pending requests without completing them with error
  // to avoid unhandled exceptions during shutdown
  _pendingRequests.clear();

  _messageController.close();
  _httpClient.close();

  if (!_closeCompleter.isCompleted) {
    _closeCompleter.complete();
  }
}