private async Task PerformDisconnectCore(string connectionId, bool waitForApplicationTask, bool closeGracefully = true) { // remove the connection from the global store so that a connection with the same connectionId can be added from elsewhere if (_clientConnectionManager.TryRemoveClientConnection(connectionId, out _)) { if (_clientConnections.TryRemove(connectionId, out var clientContext)) { if (waitForApplicationTask) { await WaitForApplicationTask(clientContext, closeGracefully); } clientContext.Transport?.OnDisconnected(); Log.ConnectedEnding(Logger, connectionId); } } }
private ClientConnectionContext RemoveClientConnection(string connectionId) { _connectionIds.TryRemove(connectionId, out _); _clientConnectionManager.TryRemoveClientConnection(connectionId, out var connection); return(connection); }