Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
0be5325
Merge changes from netfx of SqlConnectionPoolKey into netcore version
lcheunglci Sep 27, 2021
4d1f095
Fix compiler error for netfx build when referencing the merged SqlCon…
lcheunglci Sep 27, 2021
dc2c90b
Move the SqlConnectionPoolKey.cs from netcore to shared src and updat…
lcheunglci Sep 27, 2021
1143700
Move the compile include for SqlConnectionPoolKey.cs in the correct l…
lcheunglci Sep 27, 2021
895eb17
Update file to conform with coding style cleaning up IDE0044 and IDE0019
lcheunglci Sep 27, 2021
167b8de
Merge branch 'dotnet:main' into MergeShared-SqlConnectionPoolKey
lcheunglci Sep 28, 2021
f2cf2c4
Revise the ifdef in the Equals method in SqlConnectionPoolKey
lcheunglci Sep 28, 2021
8037629
Merge branch 'dotnet:main' into MergeShared-SqlConnectionPoolKey
lcheunglci Sep 29, 2021
1630bbf
Renamed the shared src SqlConnectionPoolKey.cs to SqlConnectionPoolKe…
lcheunglci Oct 4, 2021
4599f5e
Merge branch 'main' into MergeShared-SqlConnectionPoolKey
lcheunglci Oct 4, 2021
57da38b
Merge the netfx and netcore versions of SqlConnectionPoolKey.cs back …
lcheunglci Oct 6, 2021
1b2bad5
Rename SqlConnectionPoolKey.Common.cs in shared src to SqlConnectionP…
lcheunglci Oct 6, 2021
ed19eb1
Merge branch 'main' into MergeShared-SqlConnectionPoolKey
lcheunglci Oct 6, 2021
81891e9
Resolve merge conflict
lcheunglci Oct 6, 2021
71aef5f
Revise changes based on comments restore original approach forthe met…
lcheunglci Oct 7, 2021
1dd6a08
Remove the unused namespace
lcheunglci Oct 7, 2021
5f537d0
Resolve merge conflict due to the csprojs
lcheunglci Oct 14, 2021
b633b40
Merge branch 'main' into MergeShared-SqlConnectionPoolKey
lcheunglci Oct 16, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,9 @@
<Compile Include="..\..\src\Microsoft\Data\SqlClient\SqlConnectionPoolGroupProviderInfo.cs">
<Link>Microsoft\Data\SqlClient\SqlConnectionPoolGroupProviderInfo.cs</Link>
</Compile>
<Compile Include="..\..\src\Microsoft\Data\SqlClient\SqlConnectionPoolKey.cs">
<Link>Microsoft\Data\SqlClient\SqlConnectionPoolKey.cs</Link>
</Compile>
<Compile Include="..\..\src\Microsoft\Data\SqlClient\SqlConnectionPoolProviderInfo.cs">
<Link>Microsoft\Data\SqlClient\SqlConnectionPoolProviderInfo.cs</Link>
</Compile>
Expand Down Expand Up @@ -547,7 +550,6 @@
<Compile Include="Microsoft\Data\SqlClient\SqlConnection.cs" />
<Compile Include="Microsoft\Data\SqlClient\SqlConnectionFactory.cs" />
<Compile Include="Microsoft\Data\SqlClient\SqlConnectionHelper.cs" />
<Compile Include="Microsoft\Data\SqlClient\SqlConnectionPoolKey.cs" />
<Compile Include="Microsoft\Data\SqlClient\SqlConnectionString.cs" />
<Compile Include="Microsoft\Data\SqlClient\SqlConnectionStringBuilder.cs" />
<Compile Include="..\..\src\Microsoft\Data\SqlClient\SqlConnectionTimeoutErrorInternal.cs">
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,9 @@
<Compile Include="..\..\src\Microsoft\Data\SqlClient\SqlConnectionPoolGroupProviderInfo.cs">
<Link>Microsoft\Data\SqlClient\SqlConnectionPoolGroupProviderInfo.cs</Link>
</Compile>
<Compile Include="..\..\src\Microsoft\Data\SqlClient\SqlConnectionPoolKey.cs">
<Link>Microsoft\Data\SqlClient\SqlConnectionPoolKey.cs</Link>
</Compile>
<Compile Include="..\..\src\Microsoft\Data\SqlClient\SqlConnectionPoolProviderInfo.cs">
<Link>Microsoft\Data\SqlClient\SqlConnectionPoolProviderInfo.cs</Link>
</Compile>
Expand Down Expand Up @@ -536,7 +539,6 @@
<Compile Include="Microsoft\Data\SqlClient\SqlConnection.cs" />
<Compile Include="Microsoft\Data\SqlClient\SqlConnectionFactory.cs" />
<Compile Include="Microsoft\Data\SqlClient\SqlConnectionHelper.cs" />
<Compile Include="Microsoft\Data\SqlClient\SqlConnectionPoolKey.cs" />
<Compile Include="Microsoft\Data\SqlClient\SqlConnectionString.cs" />
<Compile Include="Microsoft\Data\SqlClient\SqlConnectionStringBuilder.cs" />
<Compile Include="..\..\src\Microsoft\Data\SqlClient\SqlConnectionTimeoutErrorInternal.cs">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,29 +2,53 @@
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.

using System;
using System.Diagnostics;
using Microsoft.Data.Common;

namespace Microsoft.Data.SqlClient
{
// SqlConnectionPoolKey: Implementation of a key to connection pool groups for specifically to be used for SqlConnection
// Connection string and SqlCredential are used as a key
internal class SqlConnectionPoolKey : DbConnectionPoolKey, ICloneable
internal class SqlConnectionPoolKey : DbConnectionPoolKey
{
private SqlCredential _credential;
private int _hashValue;
private readonly SqlCredential _credential;
private readonly string _accessToken;
private ServerCertificateValidationCallback _serverCertificateValidationCallback;
private ClientCertificateRetrievalCallback _clientCertificateRetrievalCallback;
private SqlClientOriginalNetworkAddressInfo _originalNetworkAddressInfo;

internal SqlCredential Credential => _credential;
internal string AccessToken => _accessToken;

internal override string ConnectionString
{
get => base.ConnectionString;
set
{
base.ConnectionString = value;
CalculateHashCode();
}
}

#if NETFRAMEWORK
#region NET Framework
private readonly ServerCertificateValidationCallback _serverCertificateValidationCallback;
private readonly ClientCertificateRetrievalCallback _clientCertificateRetrievalCallback;
private readonly SqlClientOriginalNetworkAddressInfo _originalNetworkAddressInfo;

internal ServerCertificateValidationCallback ServerCertificateValidationCallback
=> _serverCertificateValidationCallback;

internal ClientCertificateRetrievalCallback ClientCertificateRetrievalCallback
=> _clientCertificateRetrievalCallback;

internal SqlClientOriginalNetworkAddressInfo OriginalNetworkAddressInfo
=> _originalNetworkAddressInfo;

internal SqlConnectionPoolKey(string connectionString,
SqlCredential credential,
string accessToken,
ServerCertificateValidationCallback serverCertificateValidationCallback,
ClientCertificateRetrievalCallback clientCertificateRetrievalCallback,
SqlClientOriginalNetworkAddressInfo originalNetworkAddressInfo) : base(connectionString)
SqlCredential credential,
string accessToken,
ServerCertificateValidationCallback serverCertificateValidationCallback,
ClientCertificateRetrievalCallback clientCertificateRetrievalCallback,
SqlClientOriginalNetworkAddressInfo originalNetworkAddressInfo) : base(connectionString)
{
Debug.Assert(_credential == null || _accessToken == null, "Credential and AccessToken can't have the value at the same time.");
_credential = credential;
Expand All @@ -34,86 +58,47 @@ internal SqlConnectionPoolKey(string connectionString,
_originalNetworkAddressInfo = originalNetworkAddressInfo;
CalculateHashCode();
}
#endregion
#else
#region NET Core
internal SqlConnectionPoolKey(string connectionString, SqlCredential credential, string accessToken) : base(connectionString)
{
Debug.Assert(_credential == null || _accessToken == null, "Credential and AccessToken can't have the value at the same time.");
_credential = credential;
_accessToken = accessToken;
CalculateHashCode();
}
#endregion
#endif

private SqlConnectionPoolKey(SqlConnectionPoolKey key) : base(key)
{
_credential = key.Credential;
_accessToken = key.AccessToken;
#if NETFRAMEWORK
_serverCertificateValidationCallback = key._serverCertificateValidationCallback;
_clientCertificateRetrievalCallback = key._clientCertificateRetrievalCallback;
#endif
CalculateHashCode();
}

object ICloneable.Clone()
public override object Clone()
{
return new SqlConnectionPoolKey(this);
}

internal override string ConnectionString
{
get
{
return base.ConnectionString;
}

set
{
base.ConnectionString = value;
CalculateHashCode();
}
}

internal SqlCredential Credential
{
get
{
return _credential;
}
}

internal string AccessToken
{
get
{
return _accessToken;
}
}

internal ServerCertificateValidationCallback ServerCertificateValidationCallback
{
get
{
return _serverCertificateValidationCallback;
}
}

internal ClientCertificateRetrievalCallback ClientCertificateRetrievalCallback
{
get
{
return _clientCertificateRetrievalCallback;
}
}

internal SqlClientOriginalNetworkAddressInfo OriginalNetworkAddressInfo
{
get
{
return _originalNetworkAddressInfo;
}
}

public override bool Equals(object obj)
{
SqlConnectionPoolKey key = obj as SqlConnectionPoolKey;

return (key != null &&
_credential == key._credential &&
ConnectionString == key.ConnectionString &&
string.CompareOrdinal(_accessToken, key._accessToken) == 0 &&
_serverCertificateValidationCallback == key._serverCertificateValidationCallback &&
_clientCertificateRetrievalCallback == key._clientCertificateRetrievalCallback &&
_originalNetworkAddressInfo == key._originalNetworkAddressInfo);
return (obj is SqlConnectionPoolKey key
&& _credential == key._credential
&& ConnectionString == key.ConnectionString
&& string.CompareOrdinal(_accessToken, key._accessToken) == 0
#if NETFRAMEWORK
&& _serverCertificateValidationCallback == key._serverCertificateValidationCallback
&& _clientCertificateRetrievalCallback == key._clientCertificateRetrievalCallback
&& _originalNetworkAddressInfo == key._originalNetworkAddressInfo
#endif
);
}

public override int GetHashCode()
Expand All @@ -140,13 +125,15 @@ private void CalculateHashCode()
}
}

#if NETFRAMEWORK
if (_originalNetworkAddressInfo != null)
{
unchecked
{
_hashValue = _hashValue * 17 + _originalNetworkAddressInfo.GetHashCode();
}
}
#endif
}
}
}