//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....]
// @backupOwner [....]
//------------------------------------------------------------------------------
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
}
}