1
0
Fork 0
content-proxy/src/content-proxy/CacheKeyComparer.cs
2024-07-24 19:05:29 +02:00

23 lines
610 B
C#

using System.IO.Hashing;
using System.Runtime.InteropServices;
namespace ContentProxy;
public sealed class CacheKeyComparer : StringComparer
{
internal static readonly CacheKeyComparer Instance = new();
private CacheKeyComparer()
{ }
public override int Compare(string? x, string? y) => string.CompareOrdinal(x, y);
public override bool Equals(string? x, string? y) => string.Equals(x, y);
public override int GetHashCode(string obj)
{
ArgumentException.ThrowIfNullOrWhiteSpace(obj);
return unchecked((int)XxHash32.HashToUInt32(MemoryMarshal.AsBytes<char>(obj)));
}
}