//------------------------------------------------------------------------------ // <copyright file="QueryCacheKey.cs" company="Microsoft"> // Copyright (c) Microsoft Corporation. All rights reserved. // </copyright> // // @owner Microsoft // @backupOwner Microsoft //------------------------------------------------------------------------------ namespace System.Data.Common.QueryCache { using System; using System.Collections.Generic; using System.Text; /// <summary> /// represents an abstract cache key /// </summary> internal abstract class QueryCacheKey { #region Constants protected const int EstimatedParameterStringSize = 20; #endregion #region Fields /// <summary> /// entry hit counter /// </summary> private uint _hitCount; /// <summary> /// aging index /// </summary> private int _agingIndex; /// <summary> /// default string comparison kind - Ordinal /// </summary> protected static StringComparison _stringComparison = StringComparison.Ordinal; #endregion #region Constructor protected QueryCacheKey() { _hitCount = 1; } #endregion #region Abstract Methods /// <summary> /// Determines whether two instances of QueryCacheContext are equal. /// Equality is value based. /// </summary> /// <param name="obj"></param> /// <returns></returns> public abstract override bool Equals( object obj ); /// <summary> /// Returns QueryCacheContext instance HashCode /// </summary> /// <returns></returns> public abstract override int GetHashCode(); #endregion #region Internal API /// <summary> /// Cache entry hit count /// </summary> internal uint HitCount { get { return _hitCount; } set { _hitCount = value; } } /// <summary> /// Gets/Sets Aging index for cache entry /// </summary> internal int AgingIndex { get { return _agingIndex; } set { _agingIndex = value; } } /// <summary> /// Updates hit count /// </summary> internal void UpdateHit() { if (uint.MaxValue != _hitCount) { unchecked { _hitCount++; } } } /// <summary> /// default string comparer /// </summary> /// <param name="s"></param> /// <param name="t"></param> /// <returns></returns> protected virtual bool Equals( string s, string t ) { return String.Equals(s, t, _stringComparison); } #endregion } }