using System;
using System.Collections.Generic;
namespace Umbraco.Cms.Infrastructure.PublishedCache.DataSource
{
///
/// The serialization result from for which the serialized value
/// will be either a string or a byte[]
///
public struct ContentCacheDataSerializationResult : IEquatable
{
public ContentCacheDataSerializationResult(string? stringData, byte[]? byteData)
{
StringData = stringData;
ByteData = byteData;
}
public string? StringData { get; }
public byte[]? ByteData { get; }
public override bool Equals(object? obj)
=> obj is ContentCacheDataSerializationResult result && Equals(result);
public bool Equals(ContentCacheDataSerializationResult other)
=> StringData == other.StringData &&
EqualityComparer.Default.Equals(ByteData, other.ByteData);
public override int GetHashCode()
{
var hashCode = 1910544615;
if (StringData is not null)
{
hashCode = hashCode * -1521134295 + EqualityComparer.Default.GetHashCode(StringData);
}
if (ByteData is not null)
{
hashCode = hashCode * -1521134295 + EqualityComparer.Default.GetHashCode(ByteData);
}
return hashCode;
}
public static bool operator ==(ContentCacheDataSerializationResult left, ContentCacheDataSerializationResult right)
=> left.Equals(right);
public static bool operator !=(ContentCacheDataSerializationResult left, ContentCacheDataSerializationResult right)
=> !(left == right);
}
}