| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- //------------------------------------------------------------------------------
- // <copyright file="DbConnectionPoolAuthenticationContextKey.cs" company="Microsoft">
- // Copyright (c) Microsoft Corporation. All rights reserved.
- // </copyright>
- // <owner current="true" primary="true">harsudan</owner>
- // <owner current="true" primary="false">yuronhe</owner>
- //------------------------------------------------------------------------------
- using System;
- using System.Diagnostics;
- namespace System.Data.ProviderBase
- {
- /// <summary>
- /// Represents the key of dbConnectionPoolAuthenticationContext.
- /// All data members should be immutable and so, hashCode is pre-computed.
- /// </summary>
- sealed internal class DbConnectionPoolAuthenticationContextKey
- {
- /// <summary>
- /// Security Token Service Authority.
- /// </summary>
- private readonly string _stsAuthority;
- /// <summary>
- /// Service Principal Name.
- /// </summary>
- private readonly string _servicePrincipalName;
- /// <summary>
- /// Pre-Computed Hash Code.
- /// </summary>
- private readonly int _hashCode;
- internal string StsAuthority {
- get {
- return _stsAuthority;
- }
- }
- internal string ServicePrincipalName {
- get {
- return _servicePrincipalName;
- }
- }
- /// <summary>
- /// Constructor for the type.
- /// </summary>
- /// <param name="stsAuthority">Token Endpoint URL</param>
- /// <param name="servicePrincipalName">SPN representing the SQL service in an active directory.</param>
- internal DbConnectionPoolAuthenticationContextKey(string stsAuthority, string servicePrincipalName) {
- Debug.Assert(!string.IsNullOrWhiteSpace(stsAuthority));
- Debug.Assert(!string.IsNullOrWhiteSpace(servicePrincipalName));
- _stsAuthority = stsAuthority;
- _servicePrincipalName = servicePrincipalName;
- // Pre-compute hash since data members are not going to change.
- _hashCode = ComputeHashCode();
- }
- /// <summary>
- /// Override the default Equals implementation.
- /// </summary>
- /// <param name="obj"></param>
- /// <returns></returns>
- public override bool Equals(object obj) {
- if (obj == null) {
- return false;
- }
- DbConnectionPoolAuthenticationContextKey otherKey = obj as DbConnectionPoolAuthenticationContextKey;
- if (otherKey == null) {
- return false;
- }
- return (String.Equals(StsAuthority, otherKey.StsAuthority, StringComparison.InvariantCultureIgnoreCase)
- && String.Equals(ServicePrincipalName, otherKey.ServicePrincipalName, StringComparison.InvariantCultureIgnoreCase));
- }
- /// <summary>
- /// Override the default GetHashCode implementation.
- /// </summary>
- /// <returns></returns>
- public override int GetHashCode() {
- return _hashCode;
- }
- /// <summary>
- /// Compute the hash code for this object.
- /// </summary>
- /// <returns></returns>
- private int ComputeHashCode() {
- int hashCode = 33;
- unchecked
- {
- hashCode = (hashCode * 17) + StsAuthority.GetHashCode();
- hashCode = (hashCode * 17) + ServicePrincipalName.GetHashCode();
- }
- return hashCode;
- }
- }
- }
|