frostfs-sdk-csharp/src/FrostFS.SDK.Client/Parameters/PrmRangeGet.cs
Pavel Gross 9bb7b5eff8
All checks were successful
lint-build / dotnet8.0 (pull_request) Successful in 55s
DCO / DCO (pull_request) Successful in 1m4s
lint-build / dotnet8.0 (push) Successful in 1m13s
[#28] Clients: Make immutable parameters
Signed-off-by: Pavel Gross <p.gross@yadro.com>
2024-12-02 19:33:45 +03:00

57 lines
1.5 KiB
C#

namespace FrostFS.SDK.Client;
public readonly struct PrmRangeGet(
FrostFsContainerId containerId,
FrostFsObjectId objectId,
FrostFsRange range,
bool raw = false,
FrostFsSessionToken? sessionToken = null,
string[]? xheaders = null) : ISessionToken, System.IEquatable<PrmRangeGet>
{
public FrostFsContainerId ContainerId { get; } = containerId;
public FrostFsObjectId ObjectId { get; } = objectId;
public FrostFsRange Range { get; } = range;
public bool Raw { get; } = raw;
/// <inheritdoc />
public FrostFsSessionToken? SessionToken { get; } = sessionToken;
/// <summary>
/// FrostFS request X-Headers
/// </summary>
public string[] XHeaders { get; } = xheaders ?? [];
public override readonly bool Equals(object obj)
{
if (obj == null || obj is not PrmRangeGet)
return false;
return Equals((PrmRangeGet)obj);
}
public readonly bool Equals(PrmRangeGet other)
{
return GetHashCode() == other.GetHashCode();
}
public override readonly int GetHashCode()
{
return ContainerId.GetHashCode()
^ ObjectId.GetHashCode()
^ Range.GetHashCode()
^ Raw.GetHashCode();
}
public static bool operator ==(PrmRangeGet left, PrmRangeGet right)
{
return left.Equals(right);
}
public static bool operator !=(PrmRangeGet left, PrmRangeGet right)
{
return !(left == right);
}
}