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