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');
    });
  }

  // Close GET stream
  _sseSubscription?.cancel();
  _eventSource?.close();

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

  _messageController.close();
  _httpClient.close();
  _oauthClient?.close();
  _tokenManager?.dispose();

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