mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-01-15 17:23:32 -05:00
* Add CancelTokenKey for uniquely identifying cancelations of Connections associated with an OwnerUri and ConnectionType string. * Update ConnectionInfo to use ConcurrentDictionary of DbConnection instances. Add wrapper functions for the ConcurrentDictionary. * Refactor Connect and Disconnect in ConnectionService. * Update ConnectionService: Handle multiple connections per ConnectionInfo. Handle cancelation tokens uniquely identified with CancelTokenKey. Add GetOrOpenConnection() for other services to request an existing or create a new DbConnection. * Add ConnectionType.cs for ConnectionType strings. * Add ConnectionType string to ConnectParams, ConnectionCompleteNotification, DisconnectParams. * Update Query ExecuteInternal to use the dedicated query connection and GetOrOpenConnection(). * Update test library to account for multiple connections in ConnectionInfo. * Write tests ensuring multiple connections don’t create redundant data. * Write tests ensuring database changes affect all connections of a given ConnectionInfo. * Write tests for TRANSACTION statements and temp tables.
37 lines
1.0 KiB
C#
37 lines
1.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.SqlTools.ServiceLayer.Connection.Contracts;
|
|
|
|
namespace Microsoft.SqlTools.ServiceLayer.Connection
|
|
{
|
|
/// <summary>
|
|
/// Used to uniquely identify a CancellationTokenSource associated with both
|
|
/// a string URI and a string connection type.
|
|
/// </summary>
|
|
public class CancelTokenKey : CancelConnectParams, IEquatable<CancelTokenKey>
|
|
{
|
|
public override bool Equals(object obj)
|
|
{
|
|
CancelTokenKey other = obj as CancelTokenKey;
|
|
if (other == null)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return other.OwnerUri == OwnerUri && other.Type == Type;
|
|
}
|
|
|
|
public bool Equals(CancelTokenKey obj)
|
|
{
|
|
return obj.OwnerUri == OwnerUri && obj.Type == Type;
|
|
}
|
|
|
|
public override int GetHashCode()
|
|
{
|
|
return OwnerUri.GetHashCode() ^ Type.GetHashCode();
|
|
}
|
|
}
|
|
}
|